C运算符解读

一、注释符号

A)  int/*...*/i

B) char *s = "abcd   //efjh"

C) //Is it a \

valid comment?

D) in/*...*/t  i

上面的A),B),C)都是正确的。D)是错误的。

注释符号有两种:/*...*/           和     //

            注意:/*...*/ 这种形式的注释不能嵌套,因为/* 总是与离它最近的 */  匹配。

           /*这是/*非法的*/*/

1、y = x/*p

           上面的代码,编译器把/* 当作是一段注释的开始,因为没有找到 */ 所以提示出错

我们可以改一下:

           y = x / *p;

           此时,就是正确的了。

也就是说:只要斜杠(/)和星号(*)之间没有空格,都会被当作注释的开始,否则就是两个符号啦。

2、出色注释的基本要求

(1)注释应当准确,易懂,防止有二义性

(2)保证代码和注释的同步

(3)注释应当简单明了

(4)一目了然的语句不要加注释

(5)对于全局数据,必须要加注释

(6)注释尽可能采用英文,避免在注释中使用缩写,特别是不常用的缩写

(7)注释的位置应该与被描述的代码相邻,可以与语句在同一行,也可以在上行,但不可以在下行。同一结构中不同域的注释要对齐

(8)注释的缩进要与代码一致

(9)当代码比较长,特别是有多重嵌套时,应当在一些段落的结束处加注释,便于阅读

(10)注释代码段时应注重“why”,而不是怎么做"how"

(11)数值的单位一定要注释

(12)对变量的范围给出注释

(13)对于函数的入口出口数据给出注释

二、接续符和转义符

           (1)、(\)表示断行,编译器会将反斜杠剔除掉,跟在反斜杠后面的字符自动接续到前一行。

但要注意:

                      反斜杠之后不能有空格,反斜杠的下一行之前也不能有空格。

           #defi\

ne  MAC\

RO  10       这是一条合法的\

宏定义

           (2)、(\)还可以被用作转义字符的开始标识

\n                   回车换行

\t                    横向跳转到下一制表位置

\v                    竖向跳格

\b                    退格

\r                      回车

\f                      走纸换页

\\                      反斜杠符”\”

\'                      单引号

\a                      鸣铃

\ddd                 1~3位八进制数所代表的字符

\xhh                 1~2位十六进制数所代表的字符

三、单引号,双引号

1,'1'  ,"1"

这三者的区别:

           第一个是整形数据,在32位的系统下占4个byte

           第二个是字符常量,占1个字节

           第三个是字符串常量,占2个字节
字符在内存中是以ASCAII码存储的,所以下面的是正确的:‘A’+1

四、逻辑运算符

           || 和&&

这两个运算符都应该注意:

int  i = 0;

int  j = 0;

if(( ++i > 0) || (++j > 0))

{

}

最后输出i  = 1,  j = 0

五、位运算符

&   按位与

|    按位或

^   按位异或

~  取反

<<  左移,双目运算符。其功能把“<<”左边的运算数的各位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,彽位补0

>>  右移,功能和左移一样,变成向右移动。但要注意:对于有符号数,在右移时,符号位将随同移动。

           当为正数时,最高位补0;

           当为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。

(1)0x00<<2+3结果是32.因为“+”号的优先级比移位运算符的优先级高。

(2)左移和右移的位数不能大于数据的长度,也不能小于0

六、花括号

           char a[10] = {"abcd"};

七、++, --操作符

           int  i = 3;

           ( ++i ) + (++i) + (++i)

           最后的运算结果,根据编译器,可能是16,可能是18,但不可能是15.

 

A)  j = (i++, i++, i++);

B)  for( i = 0; i < 10; i++)

{

}

C)  k = (i++) + (i++) + (i++);

分析:

A)逗号表达式,i 在遇到每个逗号后,认为本计算单位已经结束,i  这时候自加。所以 j = 2

例:

           int  x;

           int  i = 3;

           x  = (++i, i++, i+10);

最后,x = 15, i = 5;

B)i  与 10比较完之后,i 自加

C)i  遇到分号才认为本计算单位已经结束,i  这时候自加

所以 k = 0

例:a+++b 可以等价于表达式: a++ +b

判断这个的方法:

           贪心法

八、2/(-2)的值是多少

           很多编译器:余数和被除数的正负号相同。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值