设为首页 加入收藏

TOP

C语言的谜题(七)
2013-01-01 14:58:44 来源: 作者: 【 】 浏览:2389
Tags:语言

 

  13、请问下面的程序输出什么?(假设:输入 Hello, World)

  #include int main()

  {

  char dummy[80];

  printf("Enter a string:\n");

  scanf("%[^r]",dummy);

  printf("%s\n",dummy);

  return 0;

  }

  参考答案:本例的输出是"Hello, Wo",scanf中的"%[^r]"是从中作梗的东西。意思是遇到字符r就结束了。

  14、下面的程序试图使用"位操作"来完成"乘5"的操作,不过这个程序中有个BUG,你知道是什么吗?

  #include

  #define PrintInt(expr)

  printf("%s : %d\n",#expr,(expr))int FiveTimes(int a)

  {

  int t;

  t = a《2 + a;

  return t;} int main()

  {

  int a = 1, b = 2,c = 3;

  PrintInt(FiveTimes(a));

  PrintInt(FiveTimes(b));

  PrintInt(FiveTimes(c));

  return 0;

  }

  参考答案:本题的问题在于函数FiveTimes中的表达式"t = a《2 + a;",对于a《2这个位操作,优先级要比加法要低,所以这个表达式就成了"t = a 《 (2+a)",于是我们就得不到我们想要的值。该程序修正如下:

  int FiveTimes(int a)

  {

  int t;

  t = (a《2) + a;

  return t;

  }

        

首页 上一页 4 5 6 7 8 下一页 尾页 7/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言基础之细节 下一篇C语言没有布尔类型的说明

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: