数据类型
基本数据类型(mac为64位)
占用空间16位 32位 64位
char 1(JAVA是2位) 11
int 244
short2 22
long 444
float 444
double 888
long long 888
void*(指针变量) 248
常量
整型常量书写
10进制 10;18;
8进制 以0开头 045; 083; 不是真正的45和83
2进制 以0b开头 0b11110000111100001111000011110000;
16进制 以0X开头 0x3e51d;
实型常量书书写
单精度 float 以f结尾
双精度 double 计算机默认以双精度的形式表示一个小数
字符常量(单个字符)
用单引号括起来的字符(英文) 如'ab' 不合法 必须是单个字符
转义字符(特殊常量)
'\r' '\n' '\\' '\t'
字符串常量
用双引号括起来,里面可以是字符数字符号 "##$aa";
C语言中支持同时为多个变量定义和赋值
int a,b,c;
a=b=c=10;
也可以int a=10,b=20;
printf的占位符的用法及输出精度问题
%d 输出一下10进制的整数
printf("%md",3.1415)
如果m小于数据位数,则按实际数据输出
m>0 且大于数据位数 则在左侧补空格
m<0 且大于数据位数 则在右侧补空格
printf("%0md",3.1415) 0只代表输出如果为别的数值则按%md处理
如果m小于数据位数,则按实际数据输出
m>0 且大于数据位数 则在左侧补0
m<0 且大于数据位数 则在右侧补0
%f 输出一个实数类型的数据(不能输出整型的数据) 默认输出6位小数,有效数位为7位(包括小数点前面的数字,如果再多了则丢失精度),如果不足6位,则补0
printf("%.nf",3.1415)只打印后N位
printf("%m.n",2.141569) m表示一共输出多少位数据 如果不足位数 则左侧开始补空格
printf("%-m.n",2.141569) 一共输出多少位数据 如果不足位数 则右侧开始补0
%c 输出一个字符
%s输出一个字符串
%o 把一个数以8进制输出
%x 把一个数以16进制输出
%p输出变量在内存中的地址
&(变量名) 获取变量的内存地址
Scanf(阻塞式函数) 与java InputStream中的read()类似
从键盘上接收数据
int a=0;
scanf("%d",&a); &a代表把输入的内容存放到a这个地址
printf("%d",a);
结果为用户输入的值
* 跳过从键盘接收到的这个值 不把这个值赋值给变量地址
int a=0;
scanf("%*d",&a); &a代表把输入的内容存放到a这个地址
printf("%d",a);
结果为0;
注意 如果输入空格 回车 Tab会被忽略(如果是多个不同类型参数间的空格则不会被忽略)
如果输入的值与要求的值的类型不一样。则不给予赋值
例如 scanf("%d%c%d");直接输入值即可不要回车、空格或者scanf("%d,%c,%d");加分上逗上分隔符
也可以通过吸收空格的方式scanf("%d%c%c%c%d");的方式获取到想要的值
SizeOf(以字节数给出期操作数的存储大小)
int c=122;
printf("%d",sizeof(c));
也可以
printf("%d",sizeof c)
逗号表达试(个人理解最大的用处在于得到前面表达试处理的结果并返回)
求值过程是
分别求出逗号两边表达式的值,并以表达式n的值(最后一个表达式的值)作为整个逗号表达试的值