C陷阱与缺陷 第一章
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);

a = ; /*八进制*/

4.字符与字符串
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' ); /*报错*/
printf("\n" );

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;

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

int a ;
a = 'abcde' ;

C陷阱与缺陷 第一章的更多相关文章
- C缺陷与陷阱----读书笔记---第一章
第一章:词法陷阱 编译器中负责将程序分解为一个一个符号的部分,一般称为“词法分析器”.例如,对于语句: if ( x == big ) big = x ; 它的第一个符号是C语言关键字if,紧接着下一 ...
- C陷阱与缺陷 第二章
有关运算符优先级 1. "<<" 和 "+" data8 = data4H << 4 +data4L; 这里本意是让高四位的数据,左 ...
- [C陷阱和缺陷] 第1章 词法“陷阱”
有感自己的C语言在有些地方存在误区,所以重新仔细把"C陷阱和缺陷"翻出来看看,并写下这篇博客,用于读书总结以及日后方便自身复习. 第1章 词法"陷阱" 1.1 ...
- 读书笔记--C陷阱与缺陷(一)
要参与C语言项目,于是作者只好重拾C语言(之前都是C++,还是C++方便). 看到大家都推荐看看 C陷阱与缺陷(C traps and pitfalls),于是好奇的开始了这本书的读书之旅. 决定将 ...
- 《C陷阱与缺陷》阅读笔记(个人版)
笔记: 第一章:词法陷阱 提倡显示比较if((x = y) != 0) foo(); 第二章:语法陷阱 已知一个类型的声明 该类型的类型转换:吧声明中的变量名和声明末尾的分号去掉,再将剩余的部分用括号 ...
- 我的《C陷阱与缺陷》读书笔记
第一章 词法“陷阱” 1. =不同于== if(x = y) break; 实际上是将y赋给x,再检查x是否为0. 如果真的是这样预期,那么应该改为: if((x = y) != 0) break; ...
- 阅读《C陷阱与缺陷》的知识增量
版权声明:本文为Focustc原创文章.转载请注明作者及出处. https://blog.csdn.net/caozhankui/article/details/35925939 看完<C陷阱与 ...
- 《C陷阱与缺陷》杂记
第一章 词法"陷阱" 1.4整型常量 如果一个整型常量的第一个字符是数字0,那么该常量将被视作八进制数.因此,10与010的含义截然不同.需要注意这种情况,有时候在上下文为了格式& ...
- CISA 信息系统审计知识点 [第一章. 信息系统审计过程 ]
对有志成为审计师或者IT管理者de朋友, 第一章. 信息系统审计过程 1. IS 审计和保障标准.指南.工具.职业道德规范 信息技术保证框架(ITAF,Information Technology A ...
随机推荐
- hdu1012
#include<iostream>#include<stdio.h> using namespace std; int jiechen(int n){ int i; ...
- SQL learning
一.创建和删除数据库 1.创建用户 //创建用户且置密码,在MySQL中行,但在Oracle中行 ----必须在超级管理员身份下操作 create user hncu identified by ' ...
- Spring的监听器ContextLoaderListener
一.作用 ContextLoaderListener监听器的作用就是启动web容器时,自动装配ApplicationContext的配置信息.它实现了ServletContextListener接口, ...
- POIXV Permutation
Description Multiset is a mathematical object similar to a set, but each member of a multiset may ha ...
- Dubbo入门实例 本地伪集群测试Demo
1. 概述 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案 Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提 ...
- Apache httpd.conf配置详解
常用配置指令说明 1. ServerRoot:服务器的基础目录,一般来说它将包含conf/和logs/子目录,其它配置文件的相对路径即基于此目录.默认为安装目录,不需更改. 语法:ServerRoot ...
- 调用短信接口,先var_dump()看数据类型是object需要json_decode(json_encode( $resp),true)转换成array
返回的数据.先看类型,如果是object类型 先json_encode, 再json_decode,加true 转换成数组 $resp = $c->execute($req); var_dump ...
- WTL版本ACEdit控件,改写自MFC版,附带源码
自动完成是个很酷也很实用的功能,比如在浏览器地址栏输入几个字母,相关的记录就会在下拉框中陈列出来. 最近在做公司产品UI部分的改善,原版本是MFC做的,我决定用WTL,于是就遇到自动完成控件的问题.遍 ...
- COM与.NET程序集导出和部署COM组件
为了分布式和多客户端调用我们还需要将写好的COM组件发布到一台服务器上.这里我们将组件部署到操作系统的COM+应用程序中去.如果没此需要就可以导出后,在C++环境中调用COM了. 第一步:导出COM组 ...
- docker私服
1.下载私服镜像docker pull registry 2.启动容器docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registr ...