复习:
1、数据类型:
signed char 1 %hhd -128~127
signed short 2 %hd -32768~32767
signed int 4 %d 正负20亿
signed long 4 %ld
signed long long 8 %lld 9天开头的19位数
unsigned char 1 %hhu 0~255
unsigned short 2 %hu 0~65535
unsigned int 4 %u 0~40亿
unsigned long 4 %lu
unsigned long long 8 %llu 1开头的20位数
float 4 %f
double 8 %lf
long double 12 %LF
2、变量取名规则
1、由数字 字母 下划线组成
2、不能以数字开头
3、不能与关键字重名
4、见名知义
3、变量的输入输出
printf 提示信息+占位符+变量名
scanf 占位符+变量地址
%nd %0nd %-nd %n.mf
3、运算符
/ % 除数不能0,否则会产生浮点数例外,核心已转储错误
== 变量尽量放在右边
++/-- 一行代码中不要过多使用
&& || 具有短路特性
A?B:C 不能出现流程控制语句
4、类型转换
自动类型转换:不同类型的数据会先转换成相同类型的数据才能进行运算。
转换规则(以不丢失数据为基础,适当牺牲一些空间):
1、字节少向字节多转
2、相同字节数有符向无符转
3、整型向浮点型转
强制类型转换:
(目标类型)数据 , 可能会造成数据丢失,慎重使用。
一、开关语句
switch
switch(n)//运算结果必须是整型
{
case val: // val必须是整常量 ,如果val等于n,则打开执行开关
...
break; // 关闭执行开关
注意:如果每个cast后都有break,就形成了分支结构。
default:// 如果所有的case都没有匹配成功则打开执行开关
}
case a ... b: 判断一个范围,此为GNU编译器独有的语法,不建议使用。
练习1:输入一个月份,判断季节。
123 春天
456 夏天
789 秋天
10 11 12 冬天
other 输入的月份有误
#include <stdio.h>
int main()
{
unsigned int month = 0;
printf("请输入一个月份:");
scanf("%u",&month);
switch(month)
{
case 1 ... 3: printf("春天"); break;
case 4 ... 6: printf("夏天"); break;
case 7 ... 9: printf("秋天"); break;
case 10 ... 12: printf("冬天"); break;
default: printf("输入的月份有误!\n"); break;
}
}
练习2:输入一个月份,判断该月有多少天,忽略闰年问题。
#include <stdio.h>
#include <stdint.h>
int main(int argc,const char* argv[])
{
uint8_t month = 0;