一个关于符号优先级的问题.
来源:学生作业帮 编辑:神马作文网作业帮 分类:数学作业 时间:2024/11/10 07:35:06
一个关于符号优先级的问题.
已知int c=3,d=4,k=0判断一下正误.
c||(d=k)执行后d的值为0
=(d!=k)表达式的值为1
第一个是错的,第二个是对的,不懂
已知int c=3,d=4,k=0判断一下正误.
c||(d=k)执行后d的值为0
=(d!=k)表达式的值为1
第一个是错的,第二个是对的,不懂
c||(d=k)执行后d的值为0 错误
c||(d=k) 执行后 d的值为4 因为c不为0,非零值都为真,而对于或运算只要有一个环节为真,那整个表达式就是真,并且这个表达式是从左向右求值的,所以d=k不会执行 所以d保持原来的值
!c!=(d!=k) 表达式的值为1 ,正确
因为!的优先级高于!=, 所以!c!=(d!=k)也就是
(!c)!=(d!=k) d!=k就是4!=0,为真 !c就是!3 为假 最后就是0!=1 结果是1
再问: 可是(d=k)应该优先极高啊,不会先执行么
再答: 你没有理解优先级的含义,优先级高不是先执行,而是操作符两端的操作数优先和这个操作符结合
再问: 能详细说一下么,不太懂
再答: 比如 a+b+c*d 因为*优先于+, 所以c*d是一个整体,而不是b+c,但是求值次序仍然是先求a+b,然后才是c*d
c||(d=k) 执行后 d的值为4 因为c不为0,非零值都为真,而对于或运算只要有一个环节为真,那整个表达式就是真,并且这个表达式是从左向右求值的,所以d=k不会执行 所以d保持原来的值
!c!=(d!=k) 表达式的值为1 ,正确
因为!的优先级高于!=, 所以!c!=(d!=k)也就是
(!c)!=(d!=k) d!=k就是4!=0,为真 !c就是!3 为假 最后就是0!=1 结果是1
再问: 可是(d=k)应该优先极高啊,不会先执行么
再答: 你没有理解优先级的含义,优先级高不是先执行,而是操作符两端的操作数优先和这个操作符结合
再问: 能详细说一下么,不太懂
再答: 比如 a+b+c*d 因为*优先于+, 所以c*d是一个整体,而不是b+c,但是求值次序仍然是先求a+b,然后才是c*d