1.注释符号 :// /*……*/
编译器在编译中将注释符号用空格代替
编译器认为双引号括起来的内容是字符串
/*……*/型注释不能被嵌套
编译器将/*作为一段注释的开始,把/*后的内容作为注释,直到出现*/
2.接续符 :\ (尽量不用)
①编译器将反斜杠删除,后面一行的内容自动接到前一行
②在连接单词时,反斜杠后不能有空格,下一行之前不能有空格
③接续符适合在定义宏代码块时使用
例:宏代码块(值传递)
#define SWAP(a,b)\
{ \
Int temp=a; \
a=b; \
b=temp; \
}
调用的a,b的值调换
若用函数写:(地址传递)
Void swap(int a;int b)
{
int temp=a;
a=b;
b=temp;
}
调用后a,b的值不会变
“\”作为接续符还是转义符:
当”\”作为接续符使用时可直接出现在程序中
当”\”作为转义符使用时需出现在字符或字符串中
3.单引号 双引号
本质上单引号括起来的一个字符代表整数
双引号扩起来的字符代表一个指针
4.取反:“!”
只认得0;见到0返回1;值不为0是结果是0
5.左移 :<< 右移 :>>
左移相当于乘以2的n次方,右移相当于除以2的n次方,但效率比常数运算符高
6.”,”表达式:
从左到右顺序求值,最后一个表达式的值为表达式的值
7.程序实例:
交换a,b的值,不使用中间变量:
方法①:a=a+b;
b=a-b;
a=a-b;
当a很大,b很大时可能溢出
方法②:(巧用^的交换律)
a=a^b;
b=a^b;//b=a^b^b=a^(b^b)=a^0=a
a=a^b;//a=a^b^a=a^a^b=0^b=b;
只适用整型数
8.多符号的读取:贪心法
编译器处理的每一个符号应尽可能多的包含字符
编译器以从左到右的顺序一个一个尽可能多的读入字符
例:a+++b=a+++b
i=2;++i+++I -> ++i++ + i-> 2++ +i 报错
9.c语言中的隐式转换:
①算术运算中,低类型转换为高类型
②赋值表达书中,表达式的值转换为左边变量类型
③函数调用时,实参转换为形参的类型
④函数返回值,return表达式转换为返回值类型
Char->short -> int->unsigned int-> long -> unsigned long ->double -> float