1,进制
(1)十进制
0--9组成,首不能为0
43
(2)八进制
0--7组成,首必须是0.
021
(3)16进制
0--9组成,a--f 或A--F组成。 首必须为0x或0X
0X23
2,输入格式
(1)输入宽度,整型
int a;
scanf("%5d",&a);
printf("%d",a);
输入12345678 输出12345
scanf("%3d%4d",&a,&b);
printf("a=%d %b=d",a,b);
输入12345678
输出 a=123 b=4567
(2)浮点型
scanf("%3.2f",&a); //是非法的。不能企图用此语句输入小数为2位的实数
(3)字符型 printf() scanf()
*一次也只能输入/出一个
(4)long long
long long : scanf("%lld",&a); printf("%lld",a);
1. 输入之间有空格
#include <stdio.h>
int main(){
char a,b,c;
scanf("%c%c%c",&a,&b,&c);
printf("%c#%c#%c#",a,b,c);
return 0;
}
输入asd
输出a#s#d#
输入a s d
输出a# #s#
(2)
#include <stdio.h>
int main(){
char a,b,c;
scanf("%c %c %c",&a,&b,&c);
printf("%c#%c#%c#",a,b,c);
return 0;
}
输入a s d
输出a#s#d#
3,类型转换
(1)赋值转换
将赋值号右侧的表达式的类型转换为左侧变量的类型
#include <stdio.h>
int main(){
int a;
a=2.3;
printf("%d",a);
return 0;
}
输出2
(2)强制转换
(类型名) 表达式
(int)3.8
double i=3.2;
(int)i; //输出3
表达式(int)i 类型为整型,但是i的类型认为double
千万不要写成 int(3.8)
它是运算符,运算等级与 ++ -- 一样
(int)3.8+1.3 //结果为4.3
(int)(3.8+1.3) //结果为5
4,表达式
(1)优先级顺序
单目运算符,赋值运算符,三目运算符结合方式从右往左。其余的都是从左往右
从左往右:操作数先与左边的运算符结合
从右往左:操作数先与右边的运算符结合
(2)算术表达式
1.自增/减运算符 ++ -- (从右往左)
操作数只能是变量,不可以是常量、表达式
count++;
1++;//不可以
(i+j)--; //不可以
-i++ ----> -(i++)
2.算术运算符(从左往右)
3*5%3 ----> (3*5)%3
(3)赋值表达式(从右往左)
a=b=3 ---> a=(b=3)
(4)关系表达式
3<=x<=5 --------> (3<=x)<=5
d=a+b>c ---------> d=[(a+b)>c] //先把右边式子运算完毕,把结果赋予d
b-1==a!=c ---------> [(b-1)==a]!=c
(5)逻辑表达式(注意短路)
a||3+10&&2 ------> a||[(3+10)&&2] //从左往右计算,先算a,再判断大括号
!x==2 --------> (!x)==2
ch=getchar()!='\n' ------------> ch=[getchar()!='\n']
(6)条件表达式(从右往左)
a>b?a:c>d?c:d ------------> [a>b?a:(c>d?c:d)]
(7)逗号表达式(从左往右)优先级最低
一般形式:
表达式1,表达式2,.......,表达式n先计算表达式1,再计算2,......,最后计算表达式n的值。
逗号表达式的值为n,表达式n的类型为逗号表达式的类型
a=1,b=2,c=a+b;
此表达式类型由c=a+b的值决定
PS:
#include <stdio.h>
int main(){
int a;
a=!(-1);
printf("%d",a);
return 0;
}
//输出为0