Chinaunix首页 | 论坛 | 博客
  • 博客访问: 47960
  • 博文数量: 18
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 209
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-11 19:33
文章分类

全部博文(18)

文章存档

2011年(1)

2009年(17)

我的朋友

分类: C/C++

2009-09-11 19:46:06

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

阅读(366) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~