c语言标识符分类
标识符.png
c语言标识符命名方式:C语言中大写字母与小写字母不同
避免用中文拼音命名,change是“改变”还是“嫦娥”有歧义
C语言变量类型
ASCII码中48表示'0',65表示'a',97表示’A'
1.变量存储在哪里?
变量的标识存放在可执行文件对应的段内
__text, __data,__bss
bss段(Block Started by Symbol)通常指用来存放程序中未初始化的全局变量的一块内存区域。
data段(data segment)通常指用来存放程序中已经初始化的全局变量的一块内存区域。
text段(code segment/text segment)通常指用来存放程序执行代码的一块内存区域。这部分区域大小在程序运行前就已经确定,并且内存区域通常属于只读(某些架构允许代码段为可写,即允许修改程序。)
此段也可能包含一些只读的常数变量,例如字符串常量等。
变量对应的内容,存放在系统当中的内存区域中
2.为什么需要这样定义?
C语言作为一种高级语言,虽然我们可以通过一定的汇编知晓其内部的操作,但在不同的平台上,其汇编的代码是有一定区别的。这样定义可以完成C语言跨平台操作,体现了其高移植性。
3.变量怎么用
当写下面这条语句时,系统做了什么
int i = 10;
int 定义数据存放类型为int类型;指明其在内存中占有sizeof(int)个字节,具体数值和系统位数、编译器位数有关。
变量名 在可执行文件的对应位置进行声明的一种和地址映射的标识符
= 赋值操作
10 一个只能读取的值,不能改变不能设置,初始化前面申请的地址空间中的内容
左值与右值(关于这个值是否可以进行读写操作)
左值指能够在=左边存在的值,也就代表这个值是可以进行赋值操作的
右值值能够在=右边存在的值,也就是这个值可以进行取值操作
4.何谓常量
常量其实就是只能进行取值操作的简单量,一般常量都是只能作为右值的
诸如数字 1 100 1.33 字符串都是右值
main也是右值,但main是一个可以变化的量,函数名在某些情况下是可以发生变化的
表达式i = 10的值是一个右值,为10。
C++对C的左值和右值表达式进行了一定的更新,比如三目运算符在C语言中返回值为右值,在C++中返回值为左值。
C语言运算符优先级表
特殊的运算符
(1)取余运算,只针对整数类型
(2)逻辑与 和逻辑或的短路特性
这两个操作符的结合性是从左到右的,如果左边的操作数不满足条件,右边的操作数也不会得到处理
(3)三目运算符
printf()函数在C语言中返回的是数值而不是变量,只能做右值不能做左值
为什么()[]->的优先级最高
因为成员直接和它们绑定
为什么单目运算符优先级第2高
因为它们是对自身进行处理
关于优先级的简单描述
单目运算符下面是乘除取余加减移位运算符
<>=<=,==!=关系运算符处于中间层次
再下面是位与位异或位或,逻辑与逻辑或,三目运算符,赋值运算符,逗号运算符。
结合性为自右向左的运算符有3类:
优先级位于第二级的单目运算符,三目运算符以及赋值运算符