已知int i,a;执行语句“i=(a=2*3,a*5),a+6;”后,变量 i 的值是( ) A 6 B 12 C 30 D 36

2024-11-15 06:54:42
推荐回答(5个)
回答1:

30。这里考察的是C语言中运算符的优先级,先执行括号的程序,然后执行逗号运算符,先执行a=2*3,再执行a*5,取右操作数,然后赋值给i,就是30。

代码如下:

#include

int main(){

int i,a;

printf("输出i的值为:");

i =(a=2*3,a*5),a+6;

printf("%d\n",i);

return 0;

}

程序运行结果:

扩展资料

C语言中,逗号运算符确保操作数被顺序地处理:先计算左边的操作数,再计算右边的操作数。右操作数的类型和值作为整个表达式的结果。左操作数只是为了副作用需要而被计算,它其值会被丢弃。逗号运算符的优先级是所有运算符中最低的。

参考资料:百度百科-C语言

回答2:

这个应该是选C。已经给你运行了,截图了。你看看。原因如下:先执行a=2*3,a=6,然后再a*5=30,注意此时有一个括号,说明前面这个逗号表达式的值为30.后面再接着一个逗号表达式。因为赋值符号 =  的优先级比逗号的高,所以直接把30赋值给了i。

如果把这题的括号去掉的话,结果就是6了。同样根据优先级的方法,i直接就等于a=2*3了。但是如果把题换成i=(a=2*3,a*5,a+6);后,答案就是12了。根据逗号表达式的特点,就可以得出答案。

这题主要考优先级关系。要学好C语言,这个一定要会哦。如果还不懂可以追问我哦。呵呵。逗号表达式的特点不知道的话可以去书上查下。

回答3:

选c 30,这个结果i=30,a=6。像这种并列逗号什么的,赋值是取第一个的。

回答4:

逗号表达式,括号里从左到右,而且A的值是传递的。故为30

回答5:

12,因为,运算符是从左到右呀6+6=12