易截截图软件、单文件、免安装、纯绿色、仅160KB

C/C++

C/C++ code:

#include <iostream.h>
void main()
{
int a=1,b=2;
cout<<(a++)+b<<'\t'<<a+++b<<endl;
cout<<a<<'\t'<<b<<endl;
}


结果
4  3
3  2
怎么分析?后面+++怎么结合啊,是+和++,还是++和+呢?
++和+

LZ 无聊

这和编译器有关

又是这种问题。。

根据最长识别原则,是++和+

同意楼上:
根据最长识别原则,是++和+




引用
根据最长识别原则,是++和+


对的。

建议楼主看下 《C陷阱与缺陷》,里面讲到这个问题了。并且是本很好的书,可以下电子版的。

按照贪心原则,编译器一个一个读字符并试图解释。a+++b被解释成a++ + b。
如果是a+++++b,因为(a++)返回的是个临时变量,不可用作左值,那么((a++)++)+b就不对,所以只能a++ + ++b。
如果是a+++++a,那么就是a++ + ++a,但是对于+操作符,标准未规定先计算左操作数还是右操作数,所以具体结果得看编译器怎么实现,所以结果未定义,这种写法应避免。


相关问答:

jsp中 <c:if test> 相关问题

在查询后将查询出来的值赋给各输入框
<c:if test="${not empty dataValue}">
      fm.SAMPLING_DATE.value=" <c:out value='${dataValue.SAMPLING_DATE}'/ ......

两个C文件的问题

以前在VC里面建一个工程,都只用一个 .c 文件,昨天在一个工程里用了两个 .c文件了,遇到问题了,请大家指点。比如:
File1.c Fil ......

eclipse3.5+cdt编译c有问题

编译普通的c没问题啊,但编译javah生成的就报错:
gcc -O0 -g3 -Wall -c -fmessage-length=0 -oHelloWorld.o ..\HelloWorld.c
gcc -otest.exe HelloWorld.o
d:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../. ......

关于the c program 的一道题!

编写程序detab, 将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止的地方。假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止位。
------------------- ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号