C 题目

What does the following program print ?
 #include <iostream>
 using namespace std;
 int Vac = 3;
 int main(){
  int Vac = 10;
  ::Vac++;
  cout<<::Vac<<endl;
  cout<<Vac<<endl;
  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

好了,今天就先介绍到这,我们以后会陆续推出更多的内容,敬请大家的期待!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值