我看到了这个代码: if (cond) { perror("an error occurred"), exit(1); } 为什么要这么做? 为什么不只是: if (cond) { perror("an error occurred"); exit(1); }
考虑函数调用(调用int sum(int, int) ) printf("%d", sum(a,b)); 编译器如何决定在函数调用sum(int, int)中使用的不是逗号运算符? 注意 :我不想在函数调用中实际使用逗号运算符。 我只是想知道编译器如何知道它不是一个逗号运算符。
#include<stdio.h> int main(void) { int a=(1, 2), 3; printf("%d", a); return 0; } 输出:2 任何人都可以解释输出是2吗?
以下代码在C / C ++中做了什么? if (blah(), 5) { //do something }
我已经用C和C ++进行了几年的编程,现在我正在学习一门大学课程,我们的书中有一个这样的function: int foo(){ int x=0; int y=20; return x,y; //y is always returned } 我从来没有见过这样的语法。 实际上,我从来没有见过在参数列表之外使用的操作符。 如果y总是回来,那么有什么意义呢? 有没有这样的情况下需要创build一个return语句? (另外,我也标记了C,因为它适用于两者,虽然我的书特别是C ++)
我在expression式( , )和MDN文档中阅读了关于“逗号运算符”的这个问题,但我想不出有用的场景。 那么,逗号运算符何时有用呢?
我想在for -loop条件而不是一个增加两个variables。 所以像这样: for (int i = 0; i != 5; ++i and ++j) do_something(i, j); 这是什么语法?
在阅读了关于未定义的行为和顺序点的答案后,我写了一个小程序: #include <stdio.h> int main(void) { int i = 5; i = (i, ++i, 1) + 1; printf("%d\n", i); return 0; } 输出是2 。 哦,上帝,我没有看到递减! 这里发生了什么? 另外,在编译上面的代码的时候,我得到了一个警告: px.c:5:8:警告:逗号expression式的左侧操作数不起作用 [-Wunused-value] i = (i, ++i, 1) + 1; ^ 为什么? 但可能会自动回答我的第一个问题的答案。
为什么在逗号运算符(如下面的例子)中指定的expression式不被视为常量expression式? 例如, int a = (10,20) ; 当在全局范围中给出时会产生一个错误“初始化器不是一个常量”,尽pipe用逗号分隔的两个expression式都是常量(常量expression式)。 为什么整个expression式不被视为一个常量expression式? 为了澄清,我已经阅读了C中'''操作符是做什么的? 和C逗号运算符的用法 。 他们还没有处理这个逗号运算符的方面。
如果我使用: 1.09 * 1; // returns "1.09" 但是,如果我使用: 1,09 * 1; // returns "9" 我知道1,09不是一个数字。 逗号在最后一段代码中做了什么? 更多的例子 if (0,9) alert("ok"); // alert if (9,0) alert("ok"); // don't alert alert(1); alert(2); alert(3); // 3 alerts alert(1), alert(2), alert(3); // 3 alerts too alert("2", foo = function (param) { alert(param) }, foo('1') ) foo('3'); // alerts 1, […]