屁哥 发表于 2017-8-13 00:41:21

逗号运算符问题 第16节课

#include <stdio.h>

int main()
{
        int a = 3, 5;

        printf("a = %d\n", a);

        return 0;
}


怎么证明 a 等于 表达式 N 的值。 图片里a = 3, 5;a的值是5么?
我 int a = 3, 5;是报错的。。。。。。

丶忘却的年少o 发表于 2017-8-13 00:41:22

#include <stdio.h>

int main()
{
      int a = (3, 5);//这里要加括号

      printf("a = %d\n", a);

      return 0;
}


因为逗号运算符优先级很低,比赋值还低,那么先是赋值再是逗号运算符。a先取了3,剩下,5。因为没有定义变量,所以逗号运算符就被系统认为是分隔符,所以就像小甲鱼老师说的变成了a = 3; 5;就是因为这样定义了一个常量,所以编译器会出错。要想先逗号运算符就要加上()。
加了()后程序的结果是5,无论逗号运算符多少个值,a还是取最后的那个值(这句话看备忘录截图有提到的){:10_275:}

和vvv 发表于 2017-8-13 08:52:36

我觉得是不能在定义变量时赋值,这样就可以:
#include <stdio.h>

int main()
{
      int a;
      a = 3,5;
      printf("a = %d\n", a);
      return 0;
}

不会报错

ba21 发表于 2017-8-13 08:56:14

屁哥 发表于 2017-8-14 13:13:54

和vvv 发表于 2017-8-13 08:52
我觉得是不能在定义变量时赋值,这样就可以:




好的 谢谢

屁哥 发表于 2017-8-14 13:15:15

ba21 发表于 2017-8-13 08:56


非常感谢
怎么是实习斑竹
那个 谁呢小仙 呢 不干了啊 哈哈 你的上一任
斑竹加油

屁哥 发表于 2017-8-14 13:15:48

丶忘却的年少o 发表于 2017-8-13 09:44
因为逗号运算符优先级很低,比赋值还低,那么先是赋值再是逗号运算符。a先取了3,剩下,5。因为没有定 ...

还是这个解释比较适合我的问题 哈哈

丶忘却的年少o 发表于 2017-8-14 16:45:20

屁哥 发表于 2017-8-14 13:15
还是这个解释比较适合我的问题 哈哈

可能是新手看看问题角度不一样,然后新手和新手交流比较容易{:10_340:}

屁哥 发表于 2017-8-15 01:44:57

丶忘却的年少o 发表于 2017-8-14 16:45
可能是新手看看问题角度不一样,然后新手和新手交流比较容易

哈哈
页: [1]
查看完整版本: 逗号运算符问题 第16节课