C语言入门系列之2.数据类型、运算符和表达式(一)(上)

简介: C语言常见数据类型如下:

一、数据类型

C语言常见数据类型如下:

2345_image_file_copy_72.jpg

1.数据类型

  • 基本数据类型

基本数据类型最主要的特点是,其值不可以再分解为其他类型。

也可以说,基本数据类型是自我说明的。

  • 构造数据类型

构造数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的。

也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本数据类型或一个构造类型。

在C语言中,构造类型有以下几种:

  • 数组
  • 结构体
  • 共用体(联合)类型
  • 指针类型

指针是一种特殊的、且具有重要作用的数据类型,其值用来表示某个变量在内存储器中的地址虽然指针变量的取值类似于整型量,但这是两个类型完全不同的量,因此不能混为一谈。

  • 空类型

在调用函数值时,通常应向调用者返回一个函数值,这个返回的函数值是具有一定的数据类型的,应在函数定义及函数说明中给以说明。

例如在上一节例题中给出的max函数定义中,函数头为int max(int a, int b);,其中int类型说明符即表示该函数的返回值为整型量。

但是,也有一类函数,调用后并不需要向调用者返回函数值,这种函数可以定义为“空类型” ,其类型说明符为void。

2.常量和变量

对于基本数据类型量,按其取值是否可改变又分为常量和变量两种。

在程序执行过程中,其值不发生改变的量称为常量,其值可变的量称为变量。

它们可与数据类型结合起来分类,例如,可分为整型常量、整型变量、浮点常量、浮点变量、字符常量、字符变量、枚举常量、枚举变量。

在程序中,常量是可以不经说明而直接引用的,而变量则必项先定义后使用。

整型量包括整型常量、整型变量。

常量和符号变量

在程序执行过程中,其值不发生改变的量称为常量。

符号常量:用标示符代表一个常量。

在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。

符号常量在使用之前必须先定义,其一般形式为:

#define 标识符 常量

其中#define也是一条预处理命令(预处理命令都以#开头),称为宏定义命令,其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。


习惯上符号常量的标识符用大写字母变量标识符用小写字母,以示区别。

举例如下:

#include <stdio.h>
#define PRICE 30
void main()
{
    int num, total;
    num = 10;
    total = num * PRICE;
    printf("total=%d", total);
}

打印:

total=300

其中:

#define PRICE 30用标识符代表一个变量,称为符号变量;

符号常量与变量不同,它的值在其作用域内不能改变,也不能再被赋值


使用符号常量的好处:

  • 含义清楚;
  • 能做到”一改全改“。

变量

其值可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元。

变量定义必项放在变量使用之前,一般放在函数体的开头部分。

如下:

int k = 3;

要区分变量名和变量值是两个不同的概念,在上例中,k是变量名,3是变量值。

3.整型数据

整型常量的表示方法

整型常量就是整常数。

在C语言中,使用的整常数有八进制、十六进制和十进制三种:

  • 十进制整常数
    十进制整常数没有前缀,其数码为0-9。
    以下各数是合法的十进制整常数:
    237、-568、65535、1627等。
  • 八进制整常数
    八进制整常数必须以0开头,即以0作为八进制数的前缀,数码取值为0-7。
    八进制数通常是无符号数。
    以下各数是合法的八进制数:
    015(十进制为13)、0101(十进制为65)、0177777(十进制为65535)。
  • 十六进制整常数
    十六进制整常数的前缀为0X或0x,其数码取值为0-9、A-F或a-f。
    以下各数是合法的十六进制整常数:
    0X2A(十进制为42)、0XA0 (十进制为160)、0xFFFF (十进制为65535)。


在程序中是根据前缀来区分各种进制数的,在书写常数时不要把前缀弄错造成结果不正确。


整型常数的后缀:

在16位字长的机器上,基本整型的长度也为16位,因此表示的数的范围也是有限定的。十进制无符号整常数的范围为0-65535,有符号数为-32768 - +32767,八进制无符号数的表示范围为0 - 0177777,十六进制无符号数的表示范围为0X0 - 0XFFFF或0x0 - 0xFFFF。

如果使用的数超过了上述范围,就必须用长整型数来表示,长整型数是用后缀 L或l 来表示的。

整型变量

变量定义的一般形式为:

类型说明符  变量名标识符, 变量名标识符, ...;

例如:

int a,b,c;      // a,b,c为整型变量
long x,y;       // x,y为长整型变量
unsigned p,q;   // p,q为无符号整型变量

在书写变量定义时,应注意以下几点:

  • 允许在一个类型说明符后,定义多个相同类型的变量,各变量名之间用“,”号间隔,类型说明符与变量名之间至少用一个空格间隔。
  • 最后一个变量名之后必须以“;”号结尾。
  • 变量定义必须放在变量使用之前。
    一般放在函数体的开头部分。


整型数据在内存中的存放形式是二进制,在上例中声明k变量,值为3,以二进制存储示意如下:

2345_image_file_copy_73.jpg

补充–内存中的二进制存储:

1字节Byte = 8位bit。

数值是以补码表示的:

  • 正数的补码与原码相同;
  • 负数的补码
    将该数的绝对值的二进制形式按位取反再加1。
    举例说明–求-10的补码:


10的原码: 00001010

取反: 11110101

再加1,得到-10的补码: 11110110


可以得到,最高位是符号位,1表示负数,0表示整数。


整型变量的分类:

  • 基本型
    类型说明符为int,在内存中占4个字节。
  • 短整型
    类型说明符为short intshort,在内存中占2个字节。
  • 长整型
    类型说明符为long intlong,在内存中占4个字节。
  • 无符号型
    类型说明符为unsigned


注意:

这里占多少个字节跟具体的系统和编译器规定有关。


在本机查看不同类型所占位数测试:

#include <stdio.h>
void main()
{
    printf("%d\n", sizeof(int));
    printf("%d\n", sizeof(short));
    printf("%d\n", sizeof(long));
    printf("%d\n", sizeof(unsigned));
}

打印:

4
2
4
4

整型变量信息如下:

image.png

整型变量的定义和使用举例如下:

#include <stdio.h>
void main()
{
    int a, b, c, d;
    unsigned u;
    a = 5;
    b = -15;
    u = 12;
    c = a + u;
    d = b + u;
    printf("a+u=%d, b+u=%d\n", c, d);
}

打印:

a+u=17, b+u=-3

在编译运行时a、b、c、d与u的数据类型不一样,会自动将无符号型转化为默认类型有符号型再进行计算。


整型数据的溢出举例如下:

#include <stdio.h>
void main()
{
    short int a, b;
    a = 32767;
    b = a + 1;
    printf("%d, %d", a, b);
}

打印:

32767, -32768

显然,出现了负数-32768。

解释:在本机编译环境中,short int是2个字节16位,216=65536,65536÷2=32768,即short int有符号型的范围是 -32768-32767,而程序中b的值为32768,超出范围即溢出,其二进制为1000000000000000,此时最高位为1表示负数,所以显示了-32768。

相关文章
|
12月前
|
存储 人工智能 程序员
一文彻底搞清楚C语言的数据类型和变量
本文介绍了数据类型(基本、构造、指针、空类型)、变量(使用、命名规则、作用域)和常量(字面、符号、枚举、表达式),帮助初学者理解编程基础概念。坚持学习,定能创造奇迹!
1977 1
一文彻底搞清楚C语言的数据类型和变量
|
12月前
|
人工智能 Java 程序员
一文彻底搞定C语言的表达式和语句
本文介绍了C语言中的表达式和语句,涵盖算术、关系等表达式及各类语句的用法,帮助初学者理解核心概念。本文介绍C语言表达式(算术、关系等)和语句(表达式、复合、控制、函数、空语句),助你掌握核心概念。
902 0
一文彻底搞定C语言的表达式和语句
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
474 7
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
存储 编译器 C语言
【C语言程序设计——入门】C语言入门与基础语法(头歌实践教学平台习题)【合集】
本文档介绍了C语言环境配置和编程任务,主要内容包括: - **C语言环境配置**:详细讲解了在Windows系统上配置C语言开发环境的步骤。 - **第1关:程序改错**:包含任务描述、相关知识(如头文件引用、基本语法规则)、编程要求、测试说明及通关代码。 - **第2关:scanf函数**:涉及`scanf`和`printf`函数的格式与使用方法,提供编程要求、测试说明及通关代码。 文档结构清晰,涵盖从环境搭建到具体编程任务的完整流程,适合初学者学习和实践。
413 4
|
C语言
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
331 1
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
606 8
C语言------运算符与表达式
这篇文章是C语言运算符与表达式的实训教程,通过多个示例程序展示了如何使用算术运算符、关系运算符、逻辑运算符以及条件语句来解决实际问题,并介绍了如何通过函数库简化复杂数学运算。
C语言------运算符与表达式
|
程序员 C语言
【C语言基础考研向】06运算符与表达式
本文介绍了C语言中的运算符分类、算术运算符及表达式、关系运算符与表达式以及运算符优先级等内容。首先概述了13种运算符类型,接着详细说明了算术运算符的优先级与使用规则,以及关系运算符和表达式的真假值表示,并给出了C语言运算符优先级表。最后附有课后习题帮助巩固理解。
383 10
|
C语言
C语言算数运算符和算数表达式详解
C语言算数运算符和算数表达式详解
431 0
|
C语言
C语言中的运算符和表达式
C语言中的运算符和表达式
237 0