c语言中。设int a=5,b=6, 写出表达式 a=a+b, a-b 的值 C语言入门题求答案:设所有变量均为int类型,则表达式(a=...

a\uff1d5\uff0cb\uff1d6 \u8868\u8fbe\u5f0fa>b||a\u7684\u503c c\u8bed\u8a00

\u7531\u4e8e\u9017\u53f7\u8fd0\u7b97\u7b26\u7684\u4f18\u5148\u7ea7\u6700\u4f4e\uff0c\u5728\u201c\u8868\u8fbe\u5f0f1,\u8868\u8fbe\u5f0f2,...,\u8868\u8fbe\u5f0fn,\u201d\u4e2d\uff0c\u9017\u53f7\u8868\u8fbe\u5f0f\u7684\u7ed3\u679c\u4e3a\u6700\u540e\u4e00\u4e2a\u8868\u8fbe\u5f0f\u7684\u503c\uff0c\u5373\u8868\u8fbe\u5f0fn\u7684\u503c\u3002 \u5982\u679c\u8bed\u53e5\u4e3aa=a+b,a-b;\u5219\u5148\u8fd0\u7b97a=a+b\uff0c\u518d\u8fd0\u7b97a-b\uff0c\u800c\u6574\u4e2a\u9017\u53f7\u8868\u8fbe\u5f0f\u7684\u503c\u4e3a5\uff0c\u5373a-b\u7684\u503c\uff0c\u6700\u540e\u7ed3\u679c\u4e3aa=11\uff0cb=6\u3002

(a=5,b=6,++a,b--,a+b)\u662f\u6240\u8c13\u9017\u53f7\u8868\u8fbe\u5f0f\uff0c\u5b83\u7684\u8ba1\u7b97\u89c4\u5219\u662f\u4ece\u5de6\u81f3\u53f3\u4e00\u4e2a\u5206\u8868\u8fbe\u5f0f\u4e00\u4e2a\u5206\u8868\u8fbe\u5f0f\u5730\u8ba1\u7b97\uff0c\u4f46\u603b\u8868\u8fbe\u5f0f\u7684\u503c\u662f\u6700\u53f3\u8fb9\u7684\u5206\u8868\u8fbe\u5f0f\u7684\u503c\u3002\u5728\u8fd9\u91cc\u5c31\u662fa+b\u7684\u503c\uff0c\u663e\u7136a+b=6+5=11\u3002

由于逗号运算符的优先级最低,在“表达式1,表达式2,...,表达式n,”中,逗号表达式的结果为最后一个表达式的值,即表达式n的值。
如果语句为a=a+b,a-b;则先运算a=a+b,再运算a-b,而整个逗号表达式的值为5,即a-b的值,最后结果为a=11,b=6。
如果语句为a=(a+b,a-b);则先运算a+b,结果无意义,再运算a-b,结果赋值作为逗号表达式的结果赋值给a,最后结果为a=-1,b=6。

设int a=5,b=6, 表达式 a=a+b, a-b 的值为 5 。
因为逗号运算符的优先级最低。原式,等价于:
(a=a+b), a-b
逗号运算的结合性是从左至右,完毕之后整个表达式的值是最后一个表达式的值。即11-6=5

因为 "a=a+b, a-b" 是一个逗号表达式 ,根据逗号表达式的特点,最后表达式的值就是最后一个表达式的值,亦即是 a - b 的值 -1 ;

That means a = ( a+b ,a - b ) is -1 ( a = -1 );

如果是这样的
#include <stdio.h>
main()
{int a=5,b=6;
printf("%d",(a=a+b, a-b));
}
那么结果是逗号表达式后面的值,应该是5;因为a=a+b,后a的值就成了11,也就是逗号表达式也要运算a=a+b

这是一个逗号表达式,最后结果是a=-1

扩展阅读:int a=0 ... int在c语言中代表什么 ... int a在c语言中什么意思 ... c语言中 0 为假吗 ... int a[3][4] ... c语言中 2 是什么意思 ... c语言中 1f和0.1f的区别 ... c语言中int main ... c语言中int a 10 什么意思 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网