Chinaunix首页 | 论坛 | 博客
  • 博客访问: 102696
  • 博文数量: 30
  • 博客积分: 305
  • 博客等级: 二等列兵
  • 技术积分: 320
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-09 12:31
文章分类

全部博文(30)

文章存档

2014年(3)

2013年(16)

2012年(11)

我的朋友

分类: C/C++

2013-05-10 14:44:53

1. == 和 = 不同
   == 比较运算符
   = 赋值运算符 【优先级底,比 || 还低】
   所以下面的代码有问题
   点击(此处)折叠或打开
  1. while(c=' ' || c=='\t' || c == '\n')
  2. {
  3.     c = gets(f)
  4. }
   上面的代码相当于 c = (' ' || c == '\t' || c == '\n') , 始终为真
2. && 和 & 不同, || 和 | 也不同
   && 和 || 都是逻辑运算符
   & 和 | 是安位运算符
3. C 语言的词法分析 的贪心原则
  a.  a---b 和 a -- -b 相同, 而和 a - --b 不同
  b. c = x/*p  /*p*/ && c = x/ *p  /*p*/ 不同 ,因为前一个 /*p 看做是注释,后一个*p只的p指向的值
4. 字符和字符串
   'a' 和 “a" 不同
         ’a‘ 表示的是一个字符,和整数值 97相同
        “a", 表示的一个字符串,在内存中的形式是 a\0
    'yes' 没有明确的定义,视编译器而定,有些返回的是'y',有些是's'

5. 嵌套注释
   有些编译器允许嵌套注释,有些不允许


点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #define A /* aaa /* a*/ a
  3. #define B */
  4. int main()
  5. {
  6.     int a = 3;
  7.     int b = 4;
  8.     int c = a---b;
  9.     int x = 8;
  10.     int *p = &b;
  11.     printf(\"%d\\t%d\\t%d\\n\",a,b,c);
  12.     a = 3;
  13.     b = 4;
  14.     c = a - --b;
  15.     printf(\"%d\\t%d\\t%d\\n\",a,b,c);
  16.     c = x/*p /*p*/;
  17.     printf(\"%d\\t%d\\t%d\\n\",c,x,*p);
  18.     c = x/ *p /*p*/;
  19.     printf(\"%d\\t%d\\t%d\\n\",c,x,*p);
  20. #ifdef B
  21.     printf(\"abc\\n\");
  22. #else
  23.     printf(\"def\\n\");
  24. #endif
  25.     return 0;
  26. }
程序的输出时: 
2       4       -1
3       3       0
8       8       3
2       8       3
abc




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