C语言学习之符号篇
2012-05-19 21:14
148 查看
/*===================================
*
* C语言学习之符号篇
*
* xue,2012、05、19 20:05
*
*===================================
1、注释符号:
a、/*总是与离它最近的*/匹配。
b、我们来看一下以下的例子,看一下哪些是正确的,哪些是错误的.
(A)、int/*...*/i;
(B)、char *s = "abcd //efg";
(C)、//IS it a \
valid comment?
(D)、in /*...*/t i;
上述例子中,A、B、C是正确的,只有D是不正确的,实际上,编译器会把注释剔除,但是不是简单的剔除,而是用空格来代替原来的注释。因此,我们就很容易看出A、B、C是合法的,D是非法的。
2、y = x/*p
实际上,编译器会把/*当成是注释的开始,把/*后面的内容当成是注释,直到出现*/为止。如果把y = x/*p改成 y=x/ *p 或 y = x/(*p),这样的话,表达式的意思就是x除以p指向的内存的值了,也就是说当/和*之间没有空格,都会被当做是注释的开始。
3、下面我们再来看一个例子
0x01 << 2 + 3;
大家来看一下它的结果是多少,是7吗?我们来测试一下:
它的结果是32;因为“+”号的优先级比移位运算符的优先级要高,所以结果就是32了
4、一些容易出错的优先级问题
a、.的优先级高于*,例 *p.f 常被误认为(*p).f,其实它是*(p.f)
b、==和!=高于位操作,例 (val & mask != 0),常被误认为(val & mask) != 0,其实它是val & (mask != 0),
c、==和!=高于赋值符,例c = getchar() != EOF,常被误认为(c =getchar()) !=EOF,实际上它是c = (getchar() ! = EOF)
d、算数运算符高于移位运算符,例 msb << 4 +lsb,常被误认为(msb << 4) + lsb,实际上它是msb << (4 + lsb),
e、符号运算符在所有的运算符中优先级最低,例i = 1,2;常被误认为是i = (1, 2),其实它是 (i = 1), 2;
总结,实际上关于运算符,在我们实际编程中,多加括号()就不会引起误会了,哈哈
*
* C语言学习之符号篇
*
* xue,2012、05、19 20:05
*
*===================================
1、注释符号:
a、/*总是与离它最近的*/匹配。
b、我们来看一下以下的例子,看一下哪些是正确的,哪些是错误的.
(A)、int/*...*/i;
(B)、char *s = "abcd //efg";
(C)、//IS it a \
valid comment?
(D)、in /*...*/t i;
上述例子中,A、B、C是正确的,只有D是不正确的,实际上,编译器会把注释剔除,但是不是简单的剔除,而是用空格来代替原来的注释。因此,我们就很容易看出A、B、C是合法的,D是非法的。
2、y = x/*p
实际上,编译器会把/*当成是注释的开始,把/*后面的内容当成是注释,直到出现*/为止。如果把y = x/*p改成 y=x/ *p 或 y = x/(*p),这样的话,表达式的意思就是x除以p指向的内存的值了,也就是说当/和*之间没有空格,都会被当做是注释的开始。
3、下面我们再来看一个例子
0x01 << 2 + 3;
大家来看一下它的结果是多少,是7吗?我们来测试一下:
它的结果是32;因为“+”号的优先级比移位运算符的优先级要高,所以结果就是32了
4、一些容易出错的优先级问题
a、.的优先级高于*,例 *p.f 常被误认为(*p).f,其实它是*(p.f)
b、==和!=高于位操作,例 (val & mask != 0),常被误认为(val & mask) != 0,其实它是val & (mask != 0),
c、==和!=高于赋值符,例c = getchar() != EOF,常被误认为(c =getchar()) !=EOF,实际上它是c = (getchar() ! = EOF)
d、算数运算符高于移位运算符,例 msb << 4 +lsb,常被误认为(msb << 4) + lsb,实际上它是msb << (4 + lsb),
e、符号运算符在所有的运算符中优先级最低,例i = 1,2;常被误认为是i = (1, 2),其实它是 (i = 1), 2;
总结,实际上关于运算符,在我们实际编程中,多加括号()就不会引起误会了,哈哈
相关文章推荐
- 《C语言深度剖析》学习笔记----C语言中的符号
- c语言深度剖析之学习笔记(二)------------符号
- C语言学习笔记 内存访问符号
- 深入理解计算机系统学习之C语言中有符号与无符号数的转换
- C语言提高班学习笔记 lesson4 符号
- C语言深度剖析学习笔记-符号
- C语言学习笔记1--符号常量、变量、运算
- C语言学习9: malloc动态内存存储,动态内存分配去空格字符增长版,动态内存分配去符号incr增长版,型参和返回值都是int型的函数的指针,main函数的地址也可以用指针指向,typedef定义函数指针,函数定义与嵌套的作用,返回函数指针类型,const作用
- c语言学习笔记(7)单引号,双引号和逻辑符号的用法
- 【C语言学习趣事】_33_关于C语言和C++语言中的取余数(求模)的计算_有符号和无符号数的相互转换问题
- C语言学习笔记1——有符号数和无符号数
- c语言学习笔记(6)注释符号,接续符号和转义符号的用法
- C语言学习笔记(五) 预处理符号
- 分支程序设计06 - 零基础入门学习C语言15
- 精选C语言学习网站
- C语言一周学习内容总结
- Ubuntu下用glade和GTK+开发C语言界面程序(三)——学习make的使用方法
- C语言学习笔记8
- 【转】程序员之路——如何学习C语言并精通C语言
- 【学习笔记】【C语言】赋值运算