有人可以解释这段代码的输出吗?
答案是90.但是,这是什么逻辑? 万一我写这个j =(4,5); 然后答案是5.有人可以解释这段代码的输出吗?
#include<stdio.h>
void main()
{
int j;
j=(4,5,90);
printf("%d\n",j);
}
您正在使用comma operator:
在C和C++编程语言中,逗号(令牌表示)是一个二进制运算符,用于评估其第一个操作数并放弃结果,然后评估第二个操作数并返回此值(和类型)。
请注意,这不同于分隔函数参数的逗号。
a = 1, 2, 3;
^^
| |
comma operators
a = foo(1, 2, 3);
^^
| |
separators
为您的代码,这意味着所有的情况是,表达式4
,5
和90
被评估一个接一个,并在此结果是最后一个表达式的结果,即90
。
圆括号只是括号,它们不会以任何方式影响结果。
const int j = (4, 5, 90);
是一样的:
const int j = 4, 5, 90;
或者,对于这个问题:
const int j = (4), (5), (90);
由于维基百科的页面我联系上指出,应该是从上面明显,逗号运算符很少有用。它可以被欺骗用于各种模糊目的的服务(参见this page for examples),但做晦涩的事情很少是赢。
逗号用作分隔符而不是运算符。因为它的优先级低于赋值。 – 2013-02-13 10:07:10
我无法清楚地明白你给了什么解释“放松”。你能否以更简单的方式解释它? – 2013-02-13 10:16:02
@Juna我增加了更多的话,希望现在更清楚。 – unwind 2013-02-13 10:40:51
你认为它是什么?你为什么写这个代码?你想达到什么目的? – Lundin 2013-02-13 10:52:38
请阅读以下内容:[逗号运算符](http://en.wikipedia.org/wiki/Comma_operator) – Alex 2013-02-13 10:05:20