m*******o 发帖数: 264 | 1 1)
int foo(int a){return a++*++a}
foo(5)的输出结果是什么?为什么
2)
void main(){
int a = 5;
{int a=6; cout << a << endl;}
}
函数里面嵌套一个{}算什么? |
E*V 发帖数: 17544 | 2 这个都是c的问题,不是c++的。
1。你少了一个`;'
2。叫做block好像
【在 m*******o 的大作中提到】 : 1) : int foo(int a){return a++*++a} : foo(5)的输出结果是什么?为什么 : 2) : void main(){ : int a = 5; : {int a=6; cout << a << endl;} : } : 函数里面嵌套一个{}算什么?
|
c**a 发帖数: 316 | 3 1.
undefined....
先算那个 operand 没有定义。
【在 m*******o 的大作中提到】 : 1) : int foo(int a){return a++*++a} : foo(5)的输出结果是什么?为什么 : 2) : void main(){ : int a = 5; : {int a=6; cout << a << endl;} : } : 函数里面嵌套一个{}算什么?
|
E*V 发帖数: 17544 | 4 defined。 ++first
【在 c**a 的大作中提到】 : 1. : undefined.... : 先算那个 operand 没有定义。
|
c**a 发帖数: 316 | 5 ....
a*b;
先算 a 还是 先算 b 是未定义的。
【在 E*V 的大作中提到】 : defined。 ++first
|
E*V 发帖数: 17544 | 6 o。一般不是后面的那个先么?
不过这个题,应该没有关系吧?
不管那个都是36?
【在 c**a 的大作中提到】 : .... : a*b; : 先算 a 还是 先算 b 是未定义的。
|
c**a 发帖数: 316 | 7 。。。。
居然还有 一般。。。
if a = 2
++a*a++ can be 8 or 9.
how about
a+++++a; ?
【在 E*V 的大作中提到】 : o。一般不是后面的那个先么? : 不过这个题,应该没有关系吧? : 不管那个都是36?
|
T*****9 发帖数: 2484 | 8 1)是未定义么?
【在 m*******o 的大作中提到】 : 1) : int foo(int a){return a++*++a} : foo(5)的输出结果是什么?为什么 : 2) : void main(){ : int a = 5; : {int a=6; cout << a << endl;} : } : 函数里面嵌套一个{}算什么?
|
t****t 发帖数: 6806 | |
c**a 发帖数: 316 | 10 看了半天,
只看懂一句, 一个 expression 不能改一个 object 2次。(&&, ||, , 也算 exp)
所以
i++*++i undefined?
对不对? 请大牛 指点下。
【在 t****t 的大作中提到】 : http://c-faq.com/expr/evalorder2.html
|
c**a 发帖数: 316 | 11 a[i] = i ++;
undefined.
我理解原因就是,
operator =(a[i],i++);
他说了一堆。。。
【在 c**a 的大作中提到】 : 看了半天, : 只看懂一句, 一个 expression 不能改一个 object 2次。(&&, ||, , 也算 exp) : 所以 : i++*++i undefined? : 对不对? 请大牛 指点下。
|
h*******e 发帖数: 225 | 12 No. google "sequence point".
【在 c**a 的大作中提到】 : 看了半天, : 只看懂一句, 一个 expression 不能改一个 object 2次。(&&, ||, , 也算 exp) : 所以 : i++*++i undefined? : 对不对? 请大牛 指点下。
|
g*****u 发帖数: 298 | |