变量
字符类型 char %c----打印一个字符'a' %s----打印字符串"abc"
整形 int %d----打印一个整数
长整型 long
短整型 short
单精度浮点型 float %f
双精度浮点型 double %lf
(sizeof--关键字---操作符----计算类型或变量所占空间)
全局变量--{}外部定义的
局部变量--{}内部定义的
当局部变量和全局变量名字冲突时,局部优先
(scanf("%d %d",&a,&b)----输入函数)(源文件第一行加上:
#define——CRT_SECURE_NO_WARNINGS 1)
数据类型必须用括号括住。sizeof(数据类型);
变量名可以不用括号括住,sizeof(变量名); sizeof 变量名;
(scanf_s函数---不建议使用--VS编译器提供的,不是c语言标准规定的)
(字符变量不能直接赋值汉字,因为编码规则不同,汉字占的字节不同。ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节等等。所以char sex = '男' 是不对的。应该使用字符数组。)
(计算机语言中没有连等,所以("a" <= ch <= "z")能执行,不会报错,但会从左往右执行,假如ch是200,a是97<=ch,所以输出为1,就变成1<=z(122),因此c语言中的关系运算符在范围内不能像数学表达式一样写,应该用&&或者||连起来)
先定义后赋值
int a = b = c = 10;中 b c两个并未定义就使用了,会直接报错
int a, b,c;
a=b=c=10;正确!
i++是先运算后自增,++i是先自增后运算
常量
字面常量
const修饰的常变量:
const 数据类型+常量名=常量值(const int num=10;)
const定义的不可被修改,所以不能事后赋值。
#define定义的标识符常量
枚举常量:可以一一列举的常量
字符串
字符数组---数组是一组形同类型的元素
字符串+转义字符
(char arr1[] = "hello bit.\0") (\0---结束标志)(默认包含\0结束标志,可以不写)
(char arr2[] = {'a','b','c','\0'})(必须写\0)
那转义字符怎么打印呢:
printf("c:\test\test.c")------不行
printf("c:\\test\\test.c")-----可以
C语言运算符优先级与结合性
类别 | 运算符 | 结合性 |
---|---|---|
后缀运算符(Postfix) | () [] -> . ++ - - | 从左到右 |
一目运算符(Unary) | + - ! ~ ++ - - (type)* & sizeof | 从右到左 |
乘性运算符(Multiplicative) | * / % | 从左到右 |
加性运算符(Additive) | + - | 从左到右 |
移位运算符(Shift) | << >> | 从左到右 |
关系运算符(Relational) | < <= > >= | 从左到右 |
等性运算符(Equality) | == != | 从左到右 |
位与运算符(Bitwise AND) | & | 从左到右 |
位异或运算符(Bitwise XOR) | ^ | 从左到右 |
位或运算符(Bitwise OR) | | | 从左到右 |
逻辑与运算符(Logical AND) | && | 从左到右 |
逻辑或运算符(Logical OR) | || | 从左到右 |
条件运算符(Conditional) | ?: | 从右到左 |
赋值运算符(Assignment) | = += -= *= /= %=>>= <<= &= ^= |= | 从右到左 |
逗号运算符(Comma) | , | 从左到右 |