关于C语言中圆括号的使用

关于C语言中圆括号的使用,c,operators,C,Operators,这使得c=b void main() int a,b,c; c=(a,b) 给出c=a 上述两种情况的原因是什么?在这一行: c=a,b c=(a,b) 括号的意思是,“首先计算表达式a,b,然后将值分配给c”。在这种情况下,分配了b,因为它是a,b的右侧表达式。在C中,从左到右求值,总值为最右边表达式的值 在这一行中: c=a,b c=(a,b) 赋值首先作为整个左手边进行计算,即c=a。这是因为equal=运算符优先于逗号,运算符。因此,b根本不会被分配到c。这相当于: c=a

这使得
c=b

void main()
int a,b,c;
c=(a,b)
给出
c=a

上述两种情况的原因是什么?

在这一行:

c=a,b 
c=(a,b)
括号的意思是,“首先计算表达式
a,b
,然后将值分配给
c
”。在这种情况下,分配了
b
,因为它是
a,b
的右侧表达式。在C中,从左到右求值,总值为最右边表达式的值

在这一行中:

c=a,b 
c=(a,b)
赋值首先作为整个左手边进行计算,即
c=a
。这是因为equal
=
运算符优先于逗号
运算符。因此,
b
根本不会被分配到
c
。这相当于:

c=a,b
在这方面:

c=a,b 
c=(a,b)
括号的意思是,“首先计算表达式
a,b
,然后将值分配给
c
”。在这种情况下,分配了
b
,因为它是
a,b
的右侧表达式。在C中,从左到右求值,总值为最右边表达式的值

在这一行中:

c=a,b 
c=(a,b)
赋值首先作为整个左手边进行计算,即
c=a
。这是因为equal
=
运算符优先于逗号
运算符。因此,
b
根本不会被分配到
c
。这相当于:

c=a,b

在C语言中,逗号运算符计算第一个操作数,然后放弃它,然后计算右操作数。所以结果就是正确的操作数。它的优先级最低

(c=a),b
c=(a,b) ()的优先级高于,因此a、b首先求值。结果是b。所以c=b

但当使用c=a时,b赋值=具有更高的优先级。所以c=a首先求值。因此a被分配给c


查看更多详细信息

在C语言中,逗号运算符计算第一个操作数,然后放弃它,然后计算右操作数。所以结果就是正确的操作数。它的优先级最低

(c=a),b
c=(a,b) ()的优先级高于,因此a、b首先求值。结果是b。所以c=b

但当使用c=a时,b赋值=具有更高的优先级。所以c=a首先求值。因此a被分配给c


查看更多详细信息

不要使用
void main()
-人们会为此感到不安。标准是
intmain(void)
intmain(intargc,char**argv)
。缺少main的括号{}。不要使用
void main()
-人们对此感到不安。标准是
intmain(void)
intmain(intargc,char**argv)
。缺少main的括号{}。