文档介绍:)an1﷽﷽﷽﷽﷽﷽﷽﷽﷽﷽﷽﷽﷽﷽﷽1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111**********C语言
标识符的命名规则
变量名可以由字母、数字和_(下划线)组合而成
变量名不能包含除_ 以外的任何特殊字符,如:%、# 、逗号、空格等
变量名必须以字母或_(下划线)开头
变量名不能包含空白字符(换行符、空格和制表符称为空白字符)
C 语言中的某些词(例如 int 和 float 等)称为保留字,具有特殊意义,不能用作变量名
C 语言区分大小写,因此变量 price 与变量 PRICE 是两个不同的变量
C语言的基本元素:常量
常量的特点:
,常量可以不经说明而直接使用
常量的分类:
:对应数据类型的常量
整形常量:12U、0L、-3
实型常量:、-
字符常量:‘a’、‘b’等
字符串常量“Hello!”
:用来标识变量名、符号常量名、函数名、数组名、文件名的有效字符序列。
有时常量定义成宏的形式:#define 标识符常量
单精度float 和双精度double
,double为双精度实数
,为float类型的变量分配4个字节的存储单元,为double类型变量分配8个字节的存储单元
-10e38~10e38,并提供6~7位有效数字位,绝对值小于10e38的数被处理成零值(MAC提供7位有效数字)
-10e308~10e308,并提供15~16位有效数字,绝对值小于10e308的数被处理成零值(MAC提供15位有效数字)
%
m表示最小字符宽度,当实际字符显示,小于该值时,自动补空格,正数时数字右对齐,负数时,左对齐
例如%3d 对应 1 的话,就是##1 %-3d 对应 1 的话,就是1##
当实际的显示大于m,那就按实际输出,也就是m无意义了
例如%3d 对应 1234 的话,就是1234 没有空格
还有要注意,这里说的是字符的宽度,小数点. 也要算进
n指的是小数点后面的数字个数(不包括小数点)
认知:实际上m没有确实的意义,n才有意义
变量内存分析
字节以”字节为单位”
内存
0xffc1
字节
0xffc3
字节
0xffc2
字节
0xffc4
字节
0xffc6
字节
0xffc5
字节
注:0xffc1为地址
变量的存储
32位编译器
64位编译器
char
1
1
int
4
4
float
4
4
double
8
8
short
2
2
long
4
8
long long
8
8
void*
4
8
所占用字节数跟类型有关,也跟编译器环境有关
变量内存是从小到大寻址的,优先分配内存地址较小的字节给变量
测试用例:(这要看电脑)
运行结果:
运行符号优先级
~ 位取反的讲解
?
正数:以原码存储(正数的补码就是原码)
负数:以补码存储(负数的补码是原码的反码加1)
?
如果负数也以原码的形式存储的话(-1+1=1这个事件就不成立),所以负数要以补码的形式存在计算机当中
,但是是要以原码显示的
3.~8对8按位取反
8======》0000 1000
~8======》1111 0111以这种形式存储在计算机当中
~8======》1000 1001 以这种形式输出
printf 和putchar
:
运行结果:
()函数作用是将一个字符输出到输出设备(如显示器)。它的一般形式为putchar(字符型或整型数据);函数putchar()的可以输出字符型变量、整型变量、字符型常量以及控制字符和转义字符。
scanf和getchar 和fflush
:
int a;
scanf(“%d\n”,&n);//这种写法是错的,这将导致scanf函数无法结束
分析
scanf的第2个参数传递的不是age变量,而是age变量的地址&age,&是C语言中的一个地址运算符,可以用来获取变量的地址
:scanf函数当输入的格式是正确的时候,返回值为1;否则返回值为0
实例