1:非数值数据表示
man:手册查看,相关命令及用法
注释:以0,1形式存在
"0"、'0'、0和'\0'的区别?
“0” | 字符串0 |
‘0’ | 字符0,对应ASCII码为48 |
0 | 数字0 |
'\0' | 空字符 |
2:常用字符
'\0' 0 字符串结束的标志
'\n' 10 换行
' ' 32 空格
'0' 48 字符0
大小写转换:+32(小写)
字符转数字:-48
2:词法符号(关键字,标识符,运算符)
7.1:关键字(*)
(1)存储类型:auto(自动型) static(静态) extern(外部引用) register(寄存器)
(2)数据类型:char(字符型) short(短整型) int(整型) long(长整型) float(浮点型) double(双精度浮点型) unsigned(无符号) signed(有符号)struct(结构体) union(共用体) enum(枚举) void(空类型)
(3)控制语句:if(条件语句) else(条件语句中否定分支) while(循环语句的循环条件) do(循环语句的循环体)for(一种循环语句) switch(开关语句) case(开关语句分支) default(开关语句中其他分支) break(中断循环) continue(继续下一轮循环) goto(跳转) return(返回)
(4)其他:sizeof(计算数据所占空间大小) const(声明只读变量)typedef(重命名) volatile(防止被编译器优化)
7.2:标识符
命名规则:<1>:由数字 字符和下划线组成
<2>开头不能为数字
<3>不能与关键字重复
7.3:运算符
- 算术运算符:+,-,*,/,%,++,-- 13/2==>6 13%2==>1 %:只能用于整数运算
- 逻辑运算符:! (!x==x==0), &&(全一则一), ||(有一则一)
- 关系运算符:<,>,>=,<=,==,!=
- 位操作运算符:&,|,~,^,<<,>> ^:相同为0,不同为1 <<:向右补0 2<<2==>01000//8
- 赋值运算符:=,+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=
-
其他运算符:三目运算符:表达式1?表达式2:表达式3 sizeof(计算开辟空间大小)
2:局部变量与全局变量:
内存分配区域:
区别:
局部变量 | 全局变量 | |
| 函数体内部 | 函数体外部 |
| 栈区 | 全局区 |
| 同函数体共存亡 | 同整个程序共存亡 |
| 作用于函数体内部 | 作用域整个程序 |
| 未初始化,值为随机值 | 未初始化时,值为0 |
3:常量:
<1>:字符型(char)
原码 反码 补码计算:
注释:正数原码反码补码是本身
-6
原码:1000 0110
反码:1111 1001(符号位不变,其余位按位取反)
补码:1111 1010(反码加一)
<2>:字符串('\0'字符串结束标志)
计算大小:strlen(不包括\0)//仅限于字符类型使用
sizeof(包括\0)
<3>:整形常量
#include<stdio.h>
int mian()
{
int a=8;
printf("%d\n",a);
printf("%d\n",0b1000);//二进制
printf("%d\n",010);//八进制
printf("%d\n",0x8);//十六进制
}
<4>:指数常量
2*10^-3==>2e-3
int main()
{
printf("%e\n",0.002);
}
<5>标识常量(宏定义)
注释:单纯替换,不进行运算
格式:#define 宏名 表达式/常量值
#include<stdio.h>
#define n 2
#define m n*n
#define sum n+m*m+n
int main()
{
printf("%d\n",sum);//2+2*2+2*2+2
return 0;
}
4:运算符和表达式:
++和--的运算:
int main()
{
int a=1,b=1;
printf("%d %d\n",a++,++b);//++在,后,先输出值在执行++,a的值输出为1
return 0;
}