What does the following program print ?
#include
using namespace std;
int Vac = 3;
int main(){
int Vac = 10;
::Vac++;
cout<<::vac>
cout<
return 0;
}
显然考查的是全局变量与局部变量的区别 结果应该是 4 10
------------------------------------------------------------
计算下面的输出结果
int i = 1,j = 2;
int k = i+++j;
cout << k << endl;
注意i+++j的结合方式是(i++)+j
所以执行顺序是先计算i+j ,再计算 i=i+1; 所以结果是4
-----------------------------------------------------------
对于x = x +1, x+= 1,x++
是确定那个效率更高,为什么?
这个提要求对汇编和编译器都有所了解
x=x+1是效率最低的,其需要执行以下步骤
读取右x的地址
x+1
读取左x的地址
将右值传给左面的x(编译器并不认为左右x的地址相同)
x+=1效率较上面的有一些改善
读取右x的地址
x+1
将得到的值传给x(x的地址已经读出)
x++ 效率最高
读取右x的地址
x自增1
-----------------------------------------------------------------
What will be the output of the following C code ?
#define product(x) (x*x) /*在宏定义中要注意空格的问题*/
int
main(void)
{
int i= 3 ,j,k;
j= product(i++); /*j = (i++ * i++) = 3*3=9但此时i已经加到了5(注意必须是先进行了运算然后再自加)*/
k = product(++i); /*k = (++i * ++i) = 7 * 7 = 49 (很有困惑性)*/
printf("j=%d,k=%d",j,k);
return 0;
}
---------------------------------------------------------------------------------------
If there are "int a = 5,b = 3;",the values of a a and b are ??
after execute "!a&&b++;".
这个题是考虑逻辑运算符的运算过程
注意在逻辑与运算中若果左侧的值为假,就可以判定整个表达是的值为false,而不需要
再去计算右侧的值。所以结果为 5,3
posted on 2009-09-12 07:27 mxp556 阅读(83) 评论(0) 编辑 收藏 引用