C语言基础内容(二)——第02章_变量与进制

第02章_变量与进制

本章专题脉络

在这里插入图片描述

1、关键字(keyword)

定义:被C语言赋予了特殊含义,用做专门用途的字符串(或单词)。

特点:(在2011年定义的)全部关键字都是小写字母

类型 具体关键字
控制语句(12 个) break, case, continue, default, do, else, for, goto, if, return, switch, while
数据类型(12 个) char, enum, double, long, float, int, short, signed, struct, unsigned, union, void
存储类型(4 个) auto, extern, register, static
其他关键字(4 个) const, sizeof, typedef, volatile

后续,1999年,C99标准增加了5个关键字:inlinerestrict_Bool_Complex_Imaginary

2011年,C11标准又增加了7个关键字:_Alignas_Alignof_Atomic_Static_assert_Noreturn_Thread_local_Generic

2、标识符(Identifier)

C语言中变量、函数、数组名、结构体等要素命名时使用的字符序列,称为标识符。

标识符的命名规则(必须遵守的硬性规定

  • 只能由26个英文字母大小写,数字(0-9) 或 _ 组成
  • 数字不可以开头
  • 不可以是关键字,但可以包含关键字
  • 不允许有空格。
  • 严格区分大小写字母。比如:Hello、hello是不同的标识符。

标识符的命名建议(建议遵守的软性要求

  • 在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。如:sum,name,max,year,total 等。

  • 不要出现仅靠大小写区分不同的标识符。如:name、Name 容易混淆

  • 尽量避免名字中出现数字编号,如value1、value2等,除非逻辑上需要编号。

  • 习惯上,所有宏定义、枚举常数、常量(只读变量)全用大写字母命名,用下划线分隔单词。

    比如: const double TAX_RATE = 0.08; //TAX_RATE 只读变量

  • 系统内部使用了一些下划线开头的标识符(比如两个下划线开头的变量名、一个下划线 + 大写英文字母开头的变量名)。比如,C99 标准添加的类型 _Bool。为防止冲突,建议用户尽量避免使用下划线开头的标识符。

  • 下划线通常用于连接一个比较长的变量名。如:max_classes_per_student。

  • 变量名、函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz (驼峰法,小驼峰)。比如:short stuAge = 20; tankShotGame

3、变量(variable)

3.1 为什么需要变量

变量是程序中不可或缺的组成单位,最基本的存储单元

3.2 初识变量

  • 变量的概念:
    • 内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化。
    • 通过变量名,可以访问这块内存区域,获取里面存储的值。
    • 变量的构成包含三个要素:数据类型变量名存储的值
    • C语言中变量声明的格式:数据类型 变量名 = 变量值
  • 变量的作用:用于在内存中保存数据。
  • 使用变量注意:
    • C语言中每个变量必须先声明,后使用
    • 不同的数据类型,占用的空间大小不一样。
    • 一旦声明,变量的类型就不能在运行时修改。

3.3 变量的声明与赋值

步骤1:变量的声明

格式:

数据类型  变量名;  //声明变量的语句必须以分号结尾

举例:

int width,height;

// 等同于
int width;
int height;
步骤2:变量的赋值

变量声明时,就为它分配内存空间,但是不会清除内存里面原来的值。这导致声明变量以后,变量会是一个随机的值。所以,变量一定要赋值以后才能使用。

int age; //变量的声明
age = 18;  //变量的赋值

变量的声明和赋值,也可以写在一行。

int age = 18;

注意:声明变量以后,不用忘记初始化赋值!定义变量时编译器并不一定清空了这块内存,它的值可能是无效的数据,运行程序,会异常退出。

3.4 变量的作用域(scope)

  • 变量的作用域:其定义所在的一对{ }内。
  • 变量只有在其作用域内才有效。出了作用域,变量不可以再被调用。
  • 同一个作用域内,不能定义重名的变量。
  • C 语言的变量作用域主要有两种:文件作用域(file scope)和块作用域(block scope)。

文件作用域(file scope)指的是,在源码文件顶层声明的变量,从声明的位置到文件结束都有效。

int x = 1;
int main() {
   
	printf("%d\n", x);
    return 0;
}

块作用域(block scope)指的是由大括号( {} )组成的代码块,它形成一个单独的作用域。凡是在块作用域里面声明的变量,只在当前代码块有效,代码块外部不可见。

int main() {
   
    int m = 10;
    if (m == 10) {
   
        int n = 20;
        printf("%d %d\n", m, n);  // 10 20
    }
    printf("%d\n", m);  // 10
    printf("%d\n", n);  // 超出作用域,报错
    
    return 0;
}

最常见的块作用域就是函数,函数内部声明的变量,对于函数外部是不可见的。 for 循环也是一个块作用域,循环变量只对循环体内部可见,外部是不可见的。

for (int i = 0; i < 10; i++){
   
	printf("%d\n", i);
}
printf("%d\n", i); // 超出作用域,报错

3.5 变量按类型的分类

变量可以按数据类型来分,也可以按声明的位置来分(全局变量、局部变量)。本节主讲变量的不同类型。

C 语言中的变量按照数据类型分为:

在这里插入图片描述

注意1:这里列举的是C语言的常用类型,后续C语言版本还有新增的类型。

注意2:空类型:void 表示空类型(无类型)。通常应用于函数的返回值类型、函数的参数、指针类型。

注意3:在C语言中,没有字符串类型,使用字符数组表示字符串。

4、基本数据类型

4.1 整数类型

4.1.1 类型说明
  • C语言规定了如下的几类整型:短整型(short)、整型(int)、长整型(long)、更长的整型(long long)

  • 每种类型都可以被 signed 和unsigned 修饰。其中,

    • 使用 signed 修饰,表示该类型的变量是带符号位的,有正负号,可以表示负值。默认是signed
    • 使用 unsigned 修饰,表示该类型的变量是不带符号位的,没有有正负号,只能表示零和正整数。
  • bit(位):计算机中的最小存储单位。

    byte(字节):计算机中基本存储单元。

    1byte = 8bit

类型 修饰符 占用空间 取值范围
short [int] signed 2个字节(=16位) -32768 ~ 32767 (- 2 15 2^{15} 215 ~ 2 15 2^{15} 215-1)
short [int] unsigned 2个字节(=16位) 0 ~ 65535 (0 ~ 2 16 2^{16} 216-1)
int signed 通常4个字节 -2147483648 ~ 2147483647 (- 2 31 2^{31} 231 ~ 2 31 2^{31} 231-1)
int unsigned 通常4个字节 0 ~ 4294967295 (0 ~ 2 32 2^{32} 232-1)
long [int] signed 4个或8个字节 4字节时:-2147483648 ~ 2147483647 (- 2 31 2^{31} 231 ~ 2 31 2^{31} 231-1)
long [int] unsigned 4个或8个字节 4字节时:-0 ~ 4294967295 (0 ~ 2 32 2^{32} 232-1)

long long int是C99新增的:

类型 修饰符 占用空间 取值范围
long long [int] signed 8个字节(=64位) -9223372036854775808~ 9223372036854775807(- 2 63 2^{63} 263 ~ 2 63 2^{63} 263-1)
long long [int] unsigned 8个字节(=64位) 0 ~ 18446744073709551615(0 ~
  • 22
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值