二 、C语言数据类型和变量

目录

2.1 数据类型介绍

2.2 signed 和unsigned

2.3 数据类型的取值范围

2.4 变量

2.5 算术操作符

2.6 赋值操作符:=和复合赋值

2.7 单目操作符:++、$--$、+、-

2.8 强制类型转换

2.9 scanf和printf

2.1 数据类型介绍

C语言中的数据类型包括基本数据类型和派生数据类型。

  1. 基本数据类型:
    • 整型数据类型:包括int(整数)、char(字符)、short(短整数)、long(长整数)等。
    • 浮点型数据类型:包括float(单精度浮点数)、double(双精度浮点数)等。
  2. 派生数据类型:
    • 数组:一组同类型的数据的集合。
    • 结构体:可以包含多个不同数据类型的成员。
    • 枚举:用于定义一组具名的整型常量。
    • 指针:用于存储变量的地址,可以指向不同类型的数据。
    • 共用体:一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型。

这些数据类型可以用于声明变量、参数以及函数返回值的类型等。 C语言中的数据类型大小取决于编译器和计算机系统。

2.2 signed 和unsigned

在C语言中,signedunsigned是用来修饰整型数据类型的关键字,它们用于指定整数的符号属性。

  1. signed关键字:
    • signed是默认情况下的整数类型修饰符,在C语言中通常可以省略。
    • 当使用signed修饰时,整数类型被指定为有符号类型,可以表示正数、负数和零。
    • 例如,signed int表示有符号整数类型,其范围为负值、零和正值。
  2. unsigned关键字:
    • unsigned用于指定无符号整数类型,表示仅能表示非负整数(零和正数),没有负数。
    • 使用unsigned修饰的整数类型只能表示非负值,因此其范围是从零到正最大值。
    • 例如,unsigned int表示无符号整数类型,其范围仅为零和正值。

在使用这两个关键字时,应考虑数据的范围以及所需的数据符号属性。unsigned类型适用于非负数值的情况,可以提供更大的范围,而signed类型适用于需要表示正数、负数和零的情况。

2.3 数据类型的取值范围

下面是常见数据类型的取值范围以及用二进制表示的方式:

  1. char:
    • 取值范围: -128 到 127 或 0 到 255(取决于是否带符号)
    • 二进制表示: 8位(1字节)
  2. unsigned char:
    • 取值范围: 0 到 255
    • 二进制表示: 8位(1字节)
  3. short:
    • 取值范围: -32768 到 32767
    • 二进制表示: 16位(2字节)
  4. unsigned short:
    • 取值范围: 0 到 65535
    • 二进制表示: 16位(2字节)
  5. int:
    • 取值范围: -2147483648 到 2147483647
    • 二进制表示: 32位(4字节)
  6. unsigned int:
    • 取值范围: 0 到 4294967295
    • 二进制表示: 32位(4字节)
  7. long:
    • 取值范围: -2147483648 到 2147483647
    • 二进制表示: 32位(4字节),在某些系统上可能是64位(8字节)
  8. unsigned long:
    • 取值范围: 0 到 4294967295
    • 二进制表示: 32位(4字节),在某些系统上可能是64位(8字节)
  9. long long:
    • 取值范围: -9223372036854775808 到 9223372036854775807
    • 二进制表示: 64位(8字节)
  10. unsigned long long:
  • 取值范围: 0 到 18446744073709551615
  • 二进制表示: 64位(8字节)

浮点类型的二进制表示通常使用IEEE 754标准。例如,float类型使用32位表示,其中1位表示符号位,8位表示指数部分,23位表示尾数部分。double类型使用64位表示,其中1位表示符号位,11位表示指数部分,52位表示尾数部分。

2.4 变量

变量是计算机编程中的一个基本概念,它是用来存储和表示数据的一种命名内存位置。在程序执行过程中,变量的值可以被读取和修改。

在大多数编程语言中,包括C语言,变量的使用需要进行以下步骤:

  1. 声明:在使用变量之前,需要声明变量,这告诉编译器在内存中为变量分配空间。在C语言中,变量的声明通常包括指定变量的数据类型和名称。

    例如,在C语言中,要声明一个整数变量,可以这样写:

    int age;
    
  2. 初始化(可选):初始化是在声明变量的同时给变量赋一个初始值。在某些情况下,变量可以在声明时初始化。

    例如,在声明时初始化一个整数变量:

    int age = 25;
    
  3. 赋值:给变量赋值是将一个特定的值存储到变量中。

    例如,在声明后给变量赋值:

    age = 30;
    

变量的名称通常由字母、数字和下划线组成,但不能以数字开头。变量名称区分大小写。

在程序中,变量可以用于存储不同类型的数据,例如整数、浮点数、字符等。通过使用变量,程序可以在运行时操作数据,并根据需要动态地改变数据。

2.5 算术操作符

算术操作符是用于执行基本算术运算的符号或符号组合。在C语言中,常见的算术操作符包括:

  1. 加法:+,用于将两个数相加。

    int result = 5 + 3; // result 的值为 8
    
  2. 减法:``,用于将一个数减去另一个数。

    int result = 5 - 3; // result 的值为 2
    
  3. 乘法:``,用于将两个数相乘。

    int result = 5 * 3; // result 的值为 15
    
  4. 除法:/,用于将一个数除以另一个数(整数除法结果为整数,若要得到浮点数结果,需要至少有一个操作数为浮点数)。

    int result = 5 / 3; // result 的值为 1
    
  5. 取模(取余):%,用于获取除法的余数。

    int result = 5 % 3; // result 的值为 2
    

注意:

  • 在C语言中,整数除法会截断小数部分,只保留整数部分,如果想要得到精确的结果,可以将其中一个操作数转换为浮点数。
  • 除数不能为0,否则会导致运行时错误。
  • 取模运算的操作数必须为整数,取模运算的结果的符号和被除数相同。

2.6 赋值操作符:=和复合赋值

赋值操作符 = 是用于将一个值赋给一个变量的基本操作符。在C语言中,它的使用方式如下:

int x;
x = 5;

这段代码将整数值5赋给变量 x

复合赋值操作符是将算术操作和赋值操作结合起来的一种简写形式。它将算术运算和赋值操作合并在一起,使得代码更加简洁和清晰。常见的复合赋值操作符包括:

  1. 加法赋值:+=

    x += 3; // 等同于 x = x + 3;
    
  2. 减法赋值:=

    x -= 3; // 等同于 x = x - 3;
    
  3. 乘法赋值:=

    x *= 3; // 等同于 x = x * 3;
    
  4. 除法赋值:/=

    x /= 3; // 等同于 x = x / 3;
    
  5. 取模赋值:%=

    x %= 3; // 等同于 x = x % 3;
    

等等。

这些复合赋值操作符可以简化代码,使得代码更加紧凑和易读。

2.7 单目操作符:++、$--$、+、-

单目操作符是只针对一个操作数的操作符。在C语言中,常见的单目操作符包括:

  1. 自增操作符 ++

    • 用于将操作数的值增加1。
    • 前缀形式:++operand,先将操作数加1,然后返回增加后的值。
    • 后缀形式:operand++,先返回操作数的原始值,然后将操作数加1。

    例如:

    int x = 5;
    int y = ++x; // x的值变为6,y的值也为6
    
  2. 自减操作符 -

    • 用于将操作数的值减少1。
    • 前缀形式:-operand,先将操作数减1,然后返回减少后的值。
    • 后缀形式:operand--,先返回操作数的原始值,然后将操作数减1。

    例如:

    int x = 5;
    int y = --x; // x的值变为4,y的值也为4
    
  3. 正号操作符 +

    • 用于表示正数。
    • 在数值前面使用 + 不改变其值,仅起到标记正数的作用。

    例如:

    int x = +5; // x的值为5
    
  4. 负号操作符 ``:

    • 用于表示负数,或者将操作数变为负数。
    • 在数值前面使用 `` 可将其变为负数。

    例如:

    int x = -5; // x的值为-5
    

这些单目操作符在表达式中的使用能够对变量进行自增、自减,或者改变其正负值,常用于循环和条件语句等场景中。

2.8 强制类型转换

强制类型转换是指将一个数据类型转换为另一个数据类型的过程。在C语言中,可以使用强制类型转换操作符 (type) 来执行这种转换。其基本形式为:

(type) expression

其中,type 是要转换的目标数据类型,expression 是要转换的表达式或变量。

例如,将一个浮点数转换为整数:

float f = 3.14;
int i = (int)f;

在上面的例子中,(int) 强制将浮点数 f 转换为整数,即将小数部分截断,得到整数部分。

需要注意以下几点:

  1. 强制类型转换可能会导致数据丢失或截断。例如,将一个浮点数转换为整数时,小数部分会被丢弃。
  2. 强制类型转换可以改变表达式的值的类型,但不会改变它的值。
  3. 强制类型转换可以用于将不同数据类型的值传递给函数,或者将函数返回的值转换为期望的类型。
  4. 虽然强制类型转换在某些情况下是必要的,但过度使用它可能会导致代码可读性降低和错误难以追踪。在进行类型转换时应该谨慎考虑。

总的来说,强制类型转换在一些特定情况下是必要的,但应该小心使用,确保转换是安全的,并且不会导致意外的行为或错误。

2.9 scanf和printf

scanfprintf 是 C 语言中用于输入和输出的两个重要函数。

  1. scanf 函数:
    • scanf 用于从标准输入(通常是键盘)中读取输入,并将数据按照指定的格式存储到变量中。

    • scanf 函数的基本语法为: 其中,format 是输入格式字符串,用于指定输入数据的格式,&variable 是要存储输入数据的变量的地址。

      scanf(format, &variable);
      
    • 例如,从键盘读取一个整数并存储到变量 num 中:

      int num;
      scanf("%d", &num);
      
    • scanf 函数会根据格式字符串解析输入,将输入的数据转换为相应的类型,并存储到指定的变量中。

  2. printf 函数:
    • printf 用于将数据按照指定的格式输出到标准输出(通常是控制台或终端)。

    • printf 函数的基本语法为: 其中,format 是输出格式字符串,用于指定输出数据的格式,argument1, argument2, ... 是要输出的数据。

      printf(format, argument1, argument2, ...);
      
    • 例如,输出一个整数和一个浮点数:

      int num = 10;
      float pi = 3.14;
      printf("The number is %d and the value of pi is %f\\\\n", num, pi);
      
    • printf 函数会根据格式字符串将指定的数据按照指定格式输出到标准输出。

这两个函数是 C 语言中最常用的输入输出函数,它们为用户提供了方便快捷的输入输出功能,是编写交互式程序的重要工具。

  • 45
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值