![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
再度求教C++大神~三个小问题。。急。。。。
一、intx=10,y=20;printf("%3x\n",x+y);输出为什么是1e不是1E啊?二、看到老师网上挂的一个重点是:d)要表示x是比0大,比10小的方法。0...
一、int x=10,y=20;
printf("%3x\n",x+y);输出为什么是1e不是1E啊?
二、看到老师网上挂的一个重点是:d)要表示 x 是比0大,比10小的方法。0是不可以的(一定记住)。是先计算0 得到的结果为1或者0;再用0,或1与10比较得到的总是真(为1)。所以一定要用(0表示比0大比10小。什么意思,没看懂。。。。
三、语句a=b=5怎么读?先5赋值给b,然后b赋值给a? 展开
printf("%3x\n",x+y);输出为什么是1e不是1E啊?
二、看到老师网上挂的一个重点是:d)要表示 x 是比0大,比10小的方法。0是不可以的(一定记住)。是先计算0 得到的结果为1或者0;再用0,或1与10比较得到的总是真(为1)。所以一定要用(0表示比0大比10小。什么意思,没看懂。。。。
三、语句a=b=5怎么读?先5赋值给b,然后b赋值给a? 展开
展开全部
1.printf("%3X\n",x+y);//大写的X
2.你们老师的意思应该是0<x<10这样的表达式是有问题的,这个表达式的值恒为真(具体解释就是你说的),想要表达你的意思应该写作0<x&&x<10
3.a=b=5等效于a=(b=5),但是说"先5赋值给b,然后b赋值给a",这个说法是有问题的,C/C++没有规定求值顺序,所以不知道哪个先赋值,哪个后赋值,只知道最终的结果是a,b值都赋值为5
2.你们老师的意思应该是0<x<10这样的表达式是有问题的,这个表达式的值恒为真(具体解释就是你说的),想要表达你的意思应该写作0<x&&x<10
3.a=b=5等效于a=(b=5),但是说"先5赋值给b,然后b赋值给a",这个说法是有问题的,C/C++没有规定求值顺序,所以不知道哪个先赋值,哪个后赋值,只知道最终的结果是a,b值都赋值为5
更多追问追答
追问
第一个在visual c++6.0运行了下还是1e啊,,
第二个的意思是说0<x的值为1然后1<10,所以整个表达式的值就是1?可以这样理解吗
追答
1."%3X\n" 这里的x大写,不是变量x大写
2.可以这么理解,实际上不管x值为多少,1<x的值不是1就是0,所以(1<x)<10恒为真
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询