c - C 运算符的问题

标签 c operators

我有这个代码:

long long int a = 3, *b = &a;
int c = !(a+=1, a>>=2, a--, !a);
printf ("%11d %d\n", a, c);

当我运行它时,它给了我 0 0,但我不明白为什么。不应该是 0 1 吗?

最佳答案

扩展代码并删除任何多余的内容:

long long int a = 3;         // a = 3
a+=1;                        // a = 4
a>>=2;                       // a = 1
a--;                         // a = 0
int c = !!a;                 // c = 0
printf ("%lld %d\n", a, c);  // prints 0 0
          ^^
      // note that this should be `ll`, not `11`

关于c - C 运算符的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48540843/

相关文章:

c - 这个简单的代码块的错误是什么?

c - 在选择阻塞时向 fd_Set 添加新的 FD

c - 带有 fgets 的 strcmp 不能正常工作

python - "is"运算符对整数的行为异常

variables - Go 是否支持运算符类型变量?

c - 我们为什么要进行类型转换?

c - 在黑客排名中显示段错误

Javascript > 运算符在扩展中不起作用

java - 为什么 Java 的 +=、-=、*=、/= 复合赋值运算符不需要将 long 转换为 int?

java - 为什么 Java 中的扩充赋值运算符会给出不同的结果?