关键字: 选择语句,循环语句,函数,数组,操作符,if(a >= 15 && a <= 20)和 if( 15 <= a <= 20)等
C语言入门Part1链接选择语句 c语言中执行代码自顶向下 选择语句分单分支,多分支
if(表达式) { 语句块;//可写多条语句 } //1.如果不写{}则默认执行if 下面的一条语句; 2. 注意else的匹配,else只会和最近的一条if语句匹配; 3. 当表达式为真时,执行语句块BY THE WAY 在C语言中只有0为假,任何非0的数都为真 if(input==1) 判断input ==1是否为真, if(input)判断input是否为真(input为非0)
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { int a; scanf("%d",&a); if (a == 1)//若a=1则输出123,a!=1则输出321 { printf("123\n"); } else { printf("321\n"); } return 0; } #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { int a; scanf("%d",&a); if (a )//判断a是否为真,若为真(a为非0)则输出123,为假(a=0)输出321 { printf("123\n"); } else { printf("321\n"); } return 0; }循环语句
while(表达式) { 语句块;//满足表达式,则循环语句块 } do { 语句块;//至少执行一次,先执行语句块,判断是否满足表达式,满足则继续执行语句块,再判断,如此循环直至满足不了表达式 }while(表达式); for(表达式1;表达式2;表达式3)//表达式1表初始化,表达式2判断语句,表达式3表步进 { 语句块; }//执行顺序,先表达式1(整个循环过程中只执行一次),再表达式2,再语句块,再表达式3如此循环函数 函数语法
返回值类型 函数名(参数1,参数2)//C语言命名函数首字母大写 eg.Add,AddTwoNum或Add_two_num(驼峰式).括号中放参数列表(参数全放进去),将其中的参数叫形参 { 实现功能; return 返回值; }例子output函数实现输出 一般将函数放在main函数前面
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> void Output(int arr[], int len)//输出函数 { int i = 0; for (i = 0; i < len; i++) { printf("%d\t", arr[i]); } } void main() { int a[] = { 1, 2 }; int b[] = { 3, 4 }; int c[2]; int i = 0; int len = sizeof(a) / sizeof(a[0]); for (i = 0; i <len; i++) { c[i] = a[i]; a[i] = b[i]; b[i] = c[i]; } Output(a, len); printf("\n"); Output(b, len); }数组
存放一组相同数据类型的集合,当定义一个数组之后,如果没有被初始化,那么默认值是随机值0xccccc,因为未初始化的局部变量的随机值都是0xccccc(栈的随机值),ps:堆的随机值都是0xcdcdcdInt len=sizeof(arr)/sizeof(arr[0]);sizeof(arr)/数组名,代表整个数组字节大小sizeof(arr[0])第一个数组元素类型字节大小,相除就是数组长度数组访问不要越界函数操作符
算数操作符:+, -,*,/,%(模)
移位操作符: >>右移 , <<左移
eg:15>>1 0000 0000 0000 0000 0000 0000 0000 1111 15的二进制 0000 0000 0000 0000 0000 0000 0000 0111 右移后最高位补符号位 %d打印结果为7 eg:-1>>1 1000 0000 0000 0000 0000 0000 0000 0001原码 1111 1111 1111 1111 1111 1111 1111 1111补码右移后 1111 1111 1111 1111 1111 1111 1111 1111 最高位补符号位 %d打印结果为-1
- 左移右边统一补0位操作符:& 按位与,^ 按位异或,| 按位或
赋值操作符:=,+=,-=,*=,/=,&=,^= ,|=,<<=,>>=
注意: a+=1相当于a=a+1
单目操作符:常用的有
“ ! ” 逻辑反
“ ~ ”对一个数的二进制按位取反
“ & ” 取地址
“ sizeof ” 操作数的类型长度(以字节为单位)
“ – ” 前置、后置–
“ ++ ” 前置、后置++
“ * ” 间接访问操作符(解引用操作符)
int a=10; printf(“%d\n”,!a);//(a的真值为10,C语言中0为假,非0都为真,所以a为真,!a为假,打印出来!a为0) printf(“%d\n”,!!a);//(双重否定表肯定,结果为1) int a=1; printf(“%d\n”,~a);//结果为-1(1的二进制1000 0000 0000 0000 0000 0000 0000 0001原码 1111 1111 1111 1111 1111 1111 1111 1111补码,所以结果为-1)a–(当前语句执行完即分号结束后再–)和–a(执行完之前就–)
int b=a--;//第一步b=a,第二步a=a-1if(a >= 15 && a <= 20)和if( 15 <= a <= 20)
int main() { int a = 10; if(a >= 15 && a <= 20)// if( 15 <= a <= 20)运行的出来,但结果错误,会输出is true,因为这样写系统默认先比较10和15,15<=10为假,所以结果为0,第二步判断0<=20是否为真,为真所以输出is true { printf("is ture\n"); } else { printf("is not ture\n"); } return 0; } 条件操作符(三目运算符) int Max(int x,int y) { return x>y?x;y;//(x是否大于y,大于返回x,小于返回y) } 逗号表达式 exp1,exp2,…,expn整个表达式的结果为最后一个表达式 int ch = (10,20,30,40); printf("%d\n",ch);//打印结果为40