当变量表达式的内容与某个case后的常量相等后,就执行该case下的语句,break表示该case以后的内容不会执行(立即跳出switch语句),
如果没有跟break,会继续执行当前case之后的case分支,直到与之匹配或都不匹配后执行default。
1.switch 后的 expression 必须是整型表达式 ? ? ?case 后的值,必须是整形常量表达式
2. case 和后边的数字之间必须有空格。
3. 每?个 case 语句中的代码执行完成后,需要加上 break ,才能跳出这个switch语句。
如果某?个 case 语句的后边没有 break 语句,代码会继续往下执行,有可能执行其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。
4.在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满足实际需求的就可以。
分数匹配例子:case 10:? case 9:printf("A");
main函数的位置可以在任意位置,但是如果在主函数之中调用了哪些函数,必须在main函数前对其所调用函数进行声明或包含其被调用函数的头文件。
define不是关键字,是编译器实现的,用来定义宏的预处理指令,不是C语言中的内容。
int、struct和continue都是C语言中包含的关键字。
小写字母的ASCII码值-32就能得到对应的大写字母的ASCII码值
小写字母的ASCII码值比对应的大写字母的ASCII码值更大的。
C语言是一门编译型计算机语言,代码需要经过编译和链接生成可执行程序才能运行的,C语言代码经过编译生成目标文件,
目标文件和链接库通过链接生成可执行程序。
strlen是用来获取字符串的有效长度的,结尾标记'\0'不包含在内。
strlen获取的规则非常简单:从前往后依次检测,直到遇到'\0'是就终止检测。
''中间只能是字符
""中间只能是字符串 例:"abc"? ""自动添加/0??? 内存空间:a b c /0
详看下图注释说明
另外c语言后来又添加了布尔这种变量,如下图所示:
size_t的本质就是无符号整型,VS上要使用%zd来打印(否则会有警告),但有些不太严谨编译器占位符也可以是%d等其他类型。
由于32位机或64位机或编译器的不同,同一类型变量在编译器中的字节数不同(char都是一个字节),但在同一编译器中,
有sizeof(short)<=sizeof(int)<=sizeof(long)<=sizeof(long long)??? sizeof(float)<=sizeof(double)<=sizeof(long double)
sizeof 变量/sizeof (变量)?? sizeof(变量类型)?
小数后加一个f表示该小数类型为float类型,如:
当sizeof(表达式)时,sizeof的计算原则:
1.如果是sizeof(a=b+c)形式时,整体的大小取决于a在对应环境下占用字节数,如下图。
2.如果是sizeof(b+c),整体的大小取决于b和c的最大所占字节数。(当b和c的字节数均小于4时(如char和short时),整体结果是4)
计算机内部计算默认是以32位进行存储和计算的(char,short,int),但当中有高于4个字节的变量时计算时就要进行整型提升。
同一文件中全局变量与局部变量的名字相同,优先使用局部变量
NULL或\0的ASCII码与空格的ASCII码不同? 空格也属于char型
8/2=4
7/2=3
7.0/2=3.5(除法中只要两边任意一个为小数,结果就是小数,打印小数应注意最后用%f/%lf)
%的两个操作数只能为整数,%只能用于整数且正负取决于第一个操作数
单目运算赋+、-的注意点
+号可以省略
a=+-10/a=-+10都表示a=-10
%nd(默认为右对齐)、%-nd(为左对齐):n表示最小宽度,当实际数(打印浮点型只有n位限制时,默认小数点后6位)大于n时,就按实际位数打印,
打印小数时,n等于整数位数、小数点、小数位数之和。
scanf()不会检测目标数组能不能放得下,就直接放
?
#include<stdio.h>
int main()
{
????int a,b,c,temp;
????scanf("%d%d%d",&a,&b,&c);
????if(a<b)
????{
????????temp=a;
????????a=b;
????????b=temp;
????}//a>b
????if(a<c)
????{
????????temp=a;
????????a=c;
????????c=temp;
????}//a>c
?????if(b<c)
????{
????????temp=b;
????????b=c;
????????c=temp;
????}//b>c
????printf("%d %d %d",a,b,c);
????return 0;
}
?