1. 使用 e1=e2的赋值方式 作为 条件语句内部的判断,请使用显示的判断
不使用:
if( x =y )
foo();

而使用:

if( (x = y) != )
foo();

2. 注意编码规范,一定要在赋值号 “=”两边,写上空格,以避免如下的 无意识错误。

本来想写成:
a = -;

但是没有加空格:

a=-;

这会被编译器翻译成:(这里猜测应该是很老的编译器才有这种解释,现在都是用 “+=”和“-=”运算符)

a = a - ;

3.进制的表示

int a ;
a = ; /*十进制*/
printf("a:%d \r\n" ,a);
a = ; /*八进制,以数字“0”开头*/
printf("a:%d \r\n" ,a);
a = 0x8D; /*十六进制*/
printf("a:%d \r\n" ,a);

现在 ”0195“  的表示方法会被编译器报错
a = ;   /*八进制*/

4.字符与字符串

     首先说明的是,对于字符串常量,是存储在常量区,只读数据区 .rodata里面的。
     (推荐一篇讲变量存储位置的文章http://blog.163.com/zhqh43@126/blog/static/404330272007102012451957/)
     并且,对于同样的字符串,是只存在一个副本的,在查找字符串的时候,会先去只读数据区查找有无对应字符串的存储地址,有的话,直接输出;没有才会创建新的字符串:

char * str = "test string address.";
char * str1 = "test string address.";
cout<<hex<<(int)( str)<<endl;/*以16进制无符号形式输出*/
cout<<(int )(str1)<< endl;
cout<<(int )("test string address.")<< endl;;
printf("Ox%x \r\n" ,str); /*以16进制无符号形式输出*/
printf("Ox%x \r\n" ,str1);
printf("Ox%x \r\n" ,"test string address.");

分别用C和C++的输出流,输出”test string address.”的地址,发现是一样的。

 
对于printf()函数来说,内部传入的是字符串的地址,所以要分清楚
字符 ('n' '\r'……用单引号,传递的是值,字符等价于一个整数,对应其ASCII码)
字符串("n","\r"……用双引号,传递的是地址,这个从上面的例子,直接把"test string address." 传给printf()函数可以看出)
的区别
printf('\n' ); /*报错*/
printf("\n" );

5. 用字符给int赋值

int a ;
a = 'yes' ;

这时候,相当于把 int 变量当作一个 char [4]的数组,'yes'会被高位对高位,低位对低位的填充进a中。

cout <<(char )a<< endl;
cout <<(char )(a>>)<< endl;
cout <<(char )(a>>)<< endl;
cout <<(char )(a>>)<< endl;

     如果字符不足4个,那么高位补0;

cout <<(char )a<< endl;
cout <<(char )(a>>)<< endl;
cout <<(char )(a>>)<< endl;
cout <<(int )(a>>)<< endl;

     如果字符过多,则会报错。
int a ;
a = 'abcde' ;

C陷阱与缺陷 第一章的更多相关文章

  1. C缺陷与陷阱----读书笔记---第一章

    第一章:词法陷阱 编译器中负责将程序分解为一个一个符号的部分,一般称为“词法分析器”.例如,对于语句: if ( x == big ) big = x ; 它的第一个符号是C语言关键字if,紧接着下一 ...

  2. C陷阱与缺陷 第二章

    有关运算符优先级   1. "<<" 和 "+" data8 = data4H << 4 +data4L; 这里本意是让高四位的数据,左 ...

  3. [C陷阱和缺陷] 第1章 词法“陷阱”

    有感自己的C语言在有些地方存在误区,所以重新仔细把"C陷阱和缺陷"翻出来看看,并写下这篇博客,用于读书总结以及日后方便自身复习. 第1章 词法"陷阱" 1.1 ...

  4. 读书笔记--C陷阱与缺陷(一)

    要参与C语言项目,于是作者只好重拾C语言(之前都是C++,还是C++方便). 看到大家都推荐看看  C陷阱与缺陷(C traps and pitfalls),于是好奇的开始了这本书的读书之旅. 决定将 ...

  5. 《C陷阱与缺陷》阅读笔记(个人版)

    笔记: 第一章:词法陷阱 提倡显示比较if((x = y) != 0) foo(); 第二章:语法陷阱 已知一个类型的声明 该类型的类型转换:吧声明中的变量名和声明末尾的分号去掉,再将剩余的部分用括号 ...

  6. 我的《C陷阱与缺陷》读书笔记

    第一章 词法“陷阱” 1. =不同于== if(x = y) break; 实际上是将y赋给x,再检查x是否为0. 如果真的是这样预期,那么应该改为: if((x = y) != 0) break; ...

  7. 阅读《C陷阱与缺陷》的知识增量

    版权声明:本文为Focustc原创文章.转载请注明作者及出处. https://blog.csdn.net/caozhankui/article/details/35925939 看完<C陷阱与 ...

  8. 《C陷阱与缺陷》杂记

    第一章 词法"陷阱" 1.4整型常量 如果一个整型常量的第一个字符是数字0,那么该常量将被视作八进制数.因此,10与010的含义截然不同.需要注意这种情况,有时候在上下文为了格式& ...

  9. CISA 信息系统审计知识点 [第一章. 信息系统审计过程 ]

    对有志成为审计师或者IT管理者de朋友, 第一章. 信息系统审计过程 1. IS 审计和保障标准.指南.工具.职业道德规范 信息技术保证框架(ITAF,Information Technology A ...

随机推荐

  1. html中 iframe子页面 与父页面之间的方法调用 ;

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. CodeForces 703D Mishka and Interesting sum

    异或运算性质,离线操作,区间求异或和. 直接求区间出现偶数次数的异或和并不好算,需要计算反面. 首先,很容易求解区间异或和,记为$P$. 例如下面这个序列,$P = A[1]xorA[2]xorA[3 ...

  3. ios根据文本自适应 然后 搭建类似如下效果

    UIView * headView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.tbSecond.size.width, 0)]; hea ...

  4. 修改VirtualBox虚拟机默认存储路径及虚拟机迁移方法

    修改默认安装路径 在安装完虚拟机以后发现我的虚拟的磁盘文件是放在C盘的,就想着有没有办法修改默认存储路径.后来发现确实可以修改,修改虚拟机方法如下:"管理"--->" ...

  5. eclipse中git插件配置 编辑

    一.Eclipse上安装GIT插件EGit EGit插件地址:http://download.eclipse.org/egit/updates OK,随后连续下一步默认安装就可以,安装后进行重启Ecl ...

  6. 关于input在li列表中居中显示

    input属于置换元素(replaced element),置换元素主要是指img,input,textarea,select,object等这类默认就有CSS格式化外表范围的元素,这些元素的垂直居中 ...

  7. C程序浅议

    文件FILE是程序设计中的一个重要概念.所谓“文件”一般是指存储在外部介质上的数据的集合.操作系统是以文件为单位对数据进行管理的,而文件是以文件名为标识的.操作系统对文件实行“按名存取”. C语言把文 ...

  8. 使用Angular构建单页面应用(SPA)

    什么是SPA?看下图就是SPA: 下面说正经的,个人理解SPA就是整个应用只有一个页面,所有的交互都在一个页面完成,不需要在页面之间跳转. 单页面的好处是更快的响应速度,更流畅的用户体验,甚至和桌面应 ...

  9. ebtables使用

    Targets: (1)ACCEPT : 让帧通过 (2)DROP: 丢弃帧. (3)CONTINUE:让帧继续走下面的规则(rule) (4)RETURN: 停止当前链的过滤规则,进而去走前面链的下 ...

  10. [ An Ac a Day ^_^ ] CodeForces 601A The Two Routes 最短路

    14号就ccpc全国赛的全国赛了 而且也快东北赛的选拔赛了 现在队伍实力实在不行 参加了也是边缘化的队伍 虽然有新生保护的设置 但实话说 机会还是不大 所以不如趁现在开始好好努力 明年也许还有机会 A ...