
数据类型类型数据类型内置类型字符型 char整型浮点型布尔类型shortintlonglonglongfloatdoublelong double_Bool自定义类型数组结构体 -struct枚举 -enum联合体-union上方类型一般指signed类型signed可以省略,若使用unsigned则不可省略例如unsigned short。大小各类数据类型的大小及计算单位介绍810241024102410241024bitbytekBMBGBTBPB长度及计算#includestdio.hintmain(){printf(%zu\n,sizeof(char));\\1byteprintf(%zu\n,sizeof(short));\\2byteprintf(%zu\n,sizeof(int));\\4byteprintf(%zu\n,sizeof(long));\\4byteprintf(%zu\n,sizeof(longlong));\\8byteprintf(%zu\n,sizeof(float));\\4byteprintf(%zu\n,sizeof(double));\\8byteprintf(%zu\n,sizeof(longdouble));\\8byteprintf(%zu\n,sizeof(_Bool));\\1byte}强制类型转换#includestdio.hintmain(){inta(int)3.14;printf(%d,a);\\输出结果为3return0;}上方例子是将浮点型的3.14强制转换成了整型的3注意并不是什么都能转换。变量创建C语言中把经常变化的值称为变量不变的值称为常量。变量创建类型 变量名 值例如inta0;变量命名的一般规则:只能由字母包括大小写、数字和下划线‘_’组成不能以数字开头长度不能超过63个字符变量名中区分大小写变量名不能使用关键字变量的名字最好有意义 eg: Age 。变量的分类变量分为全局变量和局部变量全局变量在大括号外部定义的变量就是全局变量全局变量的使用范围更广整个工程中想使用都是有办法使用的局部变量在大括号内部使用的变量就是局部变量局部变量只能在自己所在的局部范围中使用变量的存储变量创建的本质是在内存中开辟空间操作符操作符可以用来表示变量之间的关系和变量的运算算数操作符算数操作符有 - * / %分别对应加减乘除和取模。#includestdio.hintmain(){inta7;intb2;// 1. 加法 printf(%d\n,ab);// 9// 2. 减法 -printf(%d\n,a-b);// 5// 3. 乘法 *printf(%d\n,a*b);// 14// 4. 除法 / 重点两个int相除是【整数除法直接截断小数不四舍五入】printf(%d\n,a/b);// 3 7÷23.5 → 只保留整数部分3printf(%d\n,5/10);// 0 5÷100.5 →得到0// 如果想要小数结果至少一边改成浮点型printf(%lf\n,7.0/2);// 3.500000// 5. 取模求余数% **只能用于整数不能给浮点数用**printf(%d\n,a%b);// 1 7除以2余数是1printf(%d\n,8%3);// 2printf(%d\n,9%3);// 0 能整除余数0// 负数取模printf(%d\n,-7%2);// -1 余数符号和被除数一样// 组合例子printf(%d\n,ab*2);// 11 先乘后加运算符优先级return0;}赋值操作符在变量创建时给一个初始值叫初始化在变量创建后再给一个值叫赋值。赋值又分为简单赋值、复合赋值和连续赋值。#includestdio.hintmain(){inta;intb;// 简单赋值 a10;// a 10ba;// b 10// 注意 不是“等于”等于用 是**把右边的值放进左边变量**// 复合赋值 - * / %a10;a3;// a a 3; → a 13a-2;// a a - 2; → a 11a*2;// a a * 2; → a 22a/4;// a a / 4; → a 5 整数除法22/45a%3;// a a % 3; → a 2 5除以3余2// 浮点型也可以用 - * / 唯独不能用 %doubled5.6;d2.1;// d 7.7d/2;// d 3.85// 连续赋值intx,y;xy7;// 先y7再x7 x7y7// 易错不能写int xy7; 定义时不可以连续赋值要分开// int x7, y7;//易错赋值表达式本身有值intn;printf(%d\n,n6);// 输出 6 ——(n6)这个式子的值就是被赋进去的值// 注意不要把 写成 return0;}单目操作符单目操作符有 - –#includestdio.hintmain(){inta5;intb0;intc;// 1. 单目正号很少用不改变值printf(%d\n,a);// 5// 2. - 单目负号取相反数不是减法减法是双目printf(%d\n,-a);// -5// 3. 自增1前置、后置不一样a5;ca;// 前置先1再使用值 a6c6printf(a%d c%d\n,a,c);// a6 c6a5;ca;// 后置先使用原值再1 先用5赋值给c然后a变成6printf(a%d c%d\n,a,c);// a6 c5// 4. -- 自减-1同样分前置、后置a5;c--a;// 先减1再用 a4c4printf(a%d c%d\n,a,c);// a4 c4a5;ca--;// 先用原值再减1 c5a4printf(a%d c%d\n,a,c);// a4 c5// 不要写 a、a不要在一个式子里多次自增同一变量return0;}关系操作符关系操作符有 !#includestdio.hintmain(){inta7;intb3;// 1. 大于printf(%d\n,ab);// 1 73 为真printf(%d\n,ba);// 0 37 为假// 2. 大于等于printf(%d\n,a7);// 1printf(%d\n,a8);// 0// 3. 小于printf(%d\n,ab);// 0printf(%d\n,ba);// 1// 4. 小于等于printf(%d\n,a7);// 1printf(%d\n,a6);// 0// 5. 判断是否相等双等号printf(%d\n,a7);// 1printf(%d\n,a5);// 0// 6. ! 不等于printf(%d\n,a!b);// 1 7不等于3真printf(%d\n,a!7);// 0 7等于7假//易错1不要连写数学 3a7 不能直接照搬到C// if(3 a 7) 错误先算3a得到1或0再拿1/0和7比永远为真// 正确if( a3 a7 )// 易错2浮点数不要直接用 判断相等有精度误差doublex0.10.2;printf(%d\n,x0.3);// 大概率不等于0.3// 浮点数判断看差值的绝对值是不是很小不用// 易错3把 赋值写成 intn5;if(n3)// 不是判断是把3赋给n条件恒真编译器不一定报错{;}return0;}