C语言题目:设int x=2,y=3,z=4.为什么表达式(!y=1)&&(!z=q)不为1? C语言 int x=2,y=3,z=4,则表达式!x+y>z...

int x=2,y=3,z=4; \u5219\u8868\u8fbe\u5f0fx+y&&(x=y)\u7684\u503c\u4e3a_____. \u3010\u53c2\u8003\u7b54\u6848\u3011 1 \u4e3a\u4ec0\u4e48\uff1f

\u8868\u8fbe\u5f0fx+y&&(x=y)\u7b49\u4ef7\u4e8e\uff08x+y\uff09&& (x=y)\uff0cx+y=5,x=y\u662f\u5c06y\u8d4b\u7ed9x\uff0c\u6545x=3. 5 && 3 = 1
\u6ce8\u610f\u4e24\u70b9\uff1a1\u3001\u8fd0\u7b97\u4f18\u5148\u7ea7 2\u3001x=y \u4e0e x==y\u7684\u533a\u522b\uff0c\u524d\u8005\u4e3a\u8d4b\u503c\u8868\u8fbe\u5f0f\uff0c\u540e\u8005\u4e3a\u903b\u8f91\u8868\u8fbe\u5f0f

"!"\u4f18\u5148\u4e8e"+"\u4f18\u5148\u4e8e">"
\uff01x+y>z \u5c31\u662f(!x+y)>z
\u90a3\u5c31\u662f\uff080+3\uff09>4 ,\u7ed3\u679c\u662f0

=是赋值符号,==才是等于符号
而且!的优先级高于==,先!y即y=0,然后y==1不成立,所以结果为0

写错了吧,应该是
(y!=1) && (z!=0 )吧?
!= 表示不等于
!y=1是错误的语句!!

y=3 不等于1 ,y!=1 结果为1
z=4 不等于0,z!=0 结果为1
所以 相与之后,结果还是1

y = 1,那么前一个括号里(!y = 1)就是0,0再与还是0,所以不是1,是0.

扩展阅读:扫一扫题目出答案 ... c语言 int转化为int ... c语言面试题 ... c语言static int x ... c语言题目 ... c语言符号大全表解释 ... c#考试题目 ... c语言基础知识入门 ... c#面试题及答案 ...

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