错误:二进制 + 的无效操作数(有 'char *' 和 'char *'),使用宏

米尼克斯

(编辑:缺少 t1、t2 的数据类型不再丢失)

#include <stdio.h>

#define SWAP(a, b) a = ( a = a + b, b = a- b, a-b )

int main()
{
    char *names[] = {"Pat", "Bob", "Ted", NULL};
    char *t1 = names[1];
    char *t2 = names[2];

    printf("%d %d\n",t1,t2);
    SWAP(t1,t2);
    printf("%d %d\n",t1,t2);

}

我知道可以使用其他版本的交换。但是,我想暂时专注于这个特定的……我不喜欢盲目地键入代码。你能帮我更好地理解错误的来源/原因吗?

史蒂夫峰会

有几个不同的答案:

  1. 不要尝试使用“棘手”的交换宏。
  2. 你不能添加指针。

依次考虑这些:

1。我知道那个交换宏想要做什么,但是,说真的,有什么好处?说啊

char *tmp = t1;
t1 = t2;
t2 = tmp;

每个人都知道这意味着什么。不需要诡计。

在我看来(有些人可能不同意),没有好的交换宏这样的东西。每个交换宏引入的问题都多于它解决的问题。

2。您的“棘手”交换宏,尽管它可能适用于整数(并且 miiiiiiiiiiight 适用于浮点数)不适用于指针,并且它不起作用的原因是 C 认为添加指针毫无意义到一个指针。您可以将整数添加到指针,但不能添加两个指针。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无效的二进制二进制操作数(“ char(*)[36]”和“ char *”)

来自分类Dev

对二进制+(char *)和(char *)无效的操作数?

来自分类Dev

错误:类型为'const char [35]'和'const char [2]'的无效操作数为二进制'operator +'

来自分类Dev

arduino,错误:“char [14]”和“char [5]”类型的无效操作数到二进制“operator+”

来自分类Dev

错误:类型为“const char [8]”和“const char [7]”的无效操作数到二进制“operator<<”

来自分类Dev

无效的二进制二进制操作数('ostream'(aka'basic_ostream <char>')和'Date')

来自分类Dev

类型'std :: istream *'和'char'的无效操作数为二进制'operator >>'

来自分类Dev

'int' 和 'const char [15]' 类型的无效操作数到二进制 'operator<<' ^

来自分类Dev

将类型为'char *'和'const char [2]'的c ++无效操作数转换为二进制'operator +'

来自分类Dev

二进制'operator +'类型为'const char *'和'const char [2]'的无效操作数

来自分类Dev

二进制'operator +'类型为'const char [8]'和'const char *'的无效操作数

来自分类Dev

二进制表达式的无效操作数(“ ostream”(又名“ basic_ostream <char>”)和“ ostream”)

来自分类Dev

二进制“ operator <<”类型为“ double”和“ const char [5]”类型的无效操作数

来自分类Dev

对二进制表达式无效的操作数(“ ostream”(又名“ basic_ostream <char>”)和“ ostream”)

来自分类Dev

二进制“ operator!=”类型为“ double”和“ const char [13]”类型的无效操作数

来自分类Dev

二进制表达式('std :: ostream'(aka'basic_ostream <char>')和'const char *')的无效操作数

来自分类Dev

尝试编写备份程序 (C++) 时将类型为“int(const char*)”和“const char [11]”的无效操作数转换为二进制“operator<<”

来自分类Dev

错误:对二进制==无效的操作数(具有“结构演示”和“结构演示”)

来自分类Dev

错误: ? 的操作数:具有不同类型的“int”和“std::basic_ostream<char>”

来自分类Dev

将 char 宏写入二进制文件

来自分类Dev

将无效操作数错误为二进制&(具有'int **'和'int *')

来自分类Dev

错误是什么:对二进制%(具有'float'和'int')的无效操作数意味着

来自分类Dev

无效的二进制二进制操作数('const'和'const')

来自分类Dev

无效的二进制二进制操作数('const'和'const')

来自分类Dev

对二进制*无效的操作数(具有'int'和'int *')

来自分类Dev

错误:对二进制表达式无效的操作数(“ float”和“ float”)

来自分类Dev

错误:类型为“ double *”和“ double”的无效操作数为二进制“ operator /”

来自分类Dev

二进制 '<<' : 未找到采用类型为 'std::basic_ostream<char, std::char_traits<char>>' 的左操作数的运算符

来自分类Dev

使用char数组的C ++二进制搜索

Related 相关文章

  1. 1

    无效的二进制二进制操作数(“ char(*)[36]”和“ char *”)

  2. 2

    对二进制+(char *)和(char *)无效的操作数?

  3. 3

    错误:类型为'const char [35]'和'const char [2]'的无效操作数为二进制'operator +'

  4. 4

    arduino,错误:“char [14]”和“char [5]”类型的无效操作数到二进制“operator+”

  5. 5

    错误:类型为“const char [8]”和“const char [7]”的无效操作数到二进制“operator<<”

  6. 6

    无效的二进制二进制操作数('ostream'(aka'basic_ostream <char>')和'Date')

  7. 7

    类型'std :: istream *'和'char'的无效操作数为二进制'operator >>'

  8. 8

    'int' 和 'const char [15]' 类型的无效操作数到二进制 'operator<<' ^

  9. 9

    将类型为'char *'和'const char [2]'的c ++无效操作数转换为二进制'operator +'

  10. 10

    二进制'operator +'类型为'const char *'和'const char [2]'的无效操作数

  11. 11

    二进制'operator +'类型为'const char [8]'和'const char *'的无效操作数

  12. 12

    二进制表达式的无效操作数(“ ostream”(又名“ basic_ostream <char>”)和“ ostream”)

  13. 13

    二进制“ operator <<”类型为“ double”和“ const char [5]”类型的无效操作数

  14. 14

    对二进制表达式无效的操作数(“ ostream”(又名“ basic_ostream <char>”)和“ ostream”)

  15. 15

    二进制“ operator!=”类型为“ double”和“ const char [13]”类型的无效操作数

  16. 16

    二进制表达式('std :: ostream'(aka'basic_ostream <char>')和'const char *')的无效操作数

  17. 17

    尝试编写备份程序 (C++) 时将类型为“int(const char*)”和“const char [11]”的无效操作数转换为二进制“operator<<”

  18. 18

    错误:对二进制==无效的操作数(具有“结构演示”和“结构演示”)

  19. 19

    错误: ? 的操作数:具有不同类型的“int”和“std::basic_ostream<char>”

  20. 20

    将 char 宏写入二进制文件

  21. 21

    将无效操作数错误为二进制&(具有'int **'和'int *')

  22. 22

    错误是什么:对二进制%(具有'float'和'int')的无效操作数意味着

  23. 23

    无效的二进制二进制操作数('const'和'const')

  24. 24

    无效的二进制二进制操作数('const'和'const')

  25. 25

    对二进制*无效的操作数(具有'int'和'int *')

  26. 26

    错误:对二进制表达式无效的操作数(“ float”和“ float”)

  27. 27

    错误:类型为“ double *”和“ double”的无效操作数为二进制“ operator /”

  28. 28

    二进制 '<<' : 未找到采用类型为 'std::basic_ostream<char, std::char_traits<char>>' 的左操作数的运算符

  29. 29

    使用char数组的C ++二进制搜索

热门标签

归档