一,运算符
一定注意=是赋值,==才是等于!!太容易搞混了。
表达式1?表达式2:表达式3
意思是1若为真,则执行2,否则执行3
二,常量和变量
常量:程序运行过程中,值不能改变的量
符号常量:#define
变量:程序运行过程中,值能改变的量
const和define的区分:
1.从定义常量说的话: const 定义的常数是变量 ,带类型, #define 定义的只是个常数 不带类型。
2.const定义的只读变量在程序运行过程中只有一份拷贝(因为它是全局的只读变量,存放在静态区),而#define定义的宏常量在内存中有若干个拷贝。
#define宏是在预编译阶段进行替换,而const修饰的只读变量是在编译的时候确定其值。#define宏没有类型,而const修饰的只读变量具有特定的类型
#define宏是在预编译阶段进行替换,而const修饰的只读变量是在编译的时候确定其值。#define宏没有类型,而const修饰的只读变量具有特定的类型
3.const int *p; //p可变,p指向的对象不可变
int const*p; //p可变,p指向的对象不可变
int *const p; //p不可变,p指向的对象可变
const int *const p; //指针p和p指向的对象都不可变
int const*p; //p可变,p指向的对象不可变
int *const p; //p不可变,p指向的对象可变
const int *const p; //指针p和p指向的对象都不可变
三,
n=sizeof(a++);
printf("%d,%d",a,n);
sizeof()函数的意思是输出括号内的变量所占的内存空间。这里就是a的内存空间,如果定义int a;输出就是2.与a=多少无关。
四,'\0','0'
'\0':ASCII为0的字符,意义为:字符串结束符
’0‘:代表字符’0‘,即ASCII码值为48对应的字符
五,%e,%u,%o
%e:以指数形式输出实数
%u:无符号整数
%o:八进制
六,case中不能用float,double
c语言中,字符常量是整型,swith(表达式)中该表达式只能为整型,而非浮点型。浮点型无法精确定位到哪个case,所以对case不精确而不能使用。
七,if和swith谁的效率更好
swith效率更高。
if:需要遍历条件分支直到命中条件
swith:只需访问对应索引号的表项就能定位分支