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

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

再举一个例子,如下:

#include <stdio.h>
void main()
{
    long x, y;
    int a, b, c, d;
    x = 5;
    y = 6;
    a = 7;
    b = 8;
    c = x + a;
    d = y + b;
    printf("c=x+a=%d, d=y+b=%d", c, d);
}

打印:

c=x+a=12, d=y+b=14

从程序中可以看到:

x、y是长整型变量,a、b是基本整型变量,它们之间允许进行运算,运算结果为长整型。但c,d被定义为基本整型,此最后结果为基本整型。

本例说明,不同类型的量可以参与运算并相互赋值,其中的类型转换是由编译系统自动完成的。

4.实型数据

Ⅰ.实型常量的表示方法

实型也称为浮点型,实型常量也称为实数或者浮点数。

在C语言中,实数只采用十进制。

它有二种形式:十进制小数形式和指数形式:


十进制小数形式

由数码0-9和小数点组成,必须有小数点。

例如0.0、25.0、5.789、0.13、5.0、300.、-267.8230等均为合法的实数。

标准C允许浮点数使用后缀,后缀为 f或F 即表示该数为浮点数,如 356f 和 356. 是等价的。


指数形式

由十进制数、阶码标志“e”或“E”和阶码(只能为整数,可以带符号)组成。

其一般形式为:

aEn(a为十进制数,n为十进制整数)

例如:


2.1E5 (等于2.1105)
3.7E-2 (等于3.7
10-2)

0.5E7 (等于0.5107)
-2.8E-2 (等于-2.8
10-2)


以下不是合法的实数:


345 (无小数点)

E7 (阶码标志E之前无数字)

-5 (无阶码标志)

53.-E3 (负号位置不对)

2.7E (无阶码)

Ⅱ.实型变量

实型数据在内存中的存放形式

实型数据一般占4个字节(32位)内存空间,按指数形式存储。

浮点数的二进制存储方式如下:

2345_image_file_copy_74.jpg

举例3.14159在内存中的存放形式如下:

image.png

  • 小数部分占的位(bit)数愈多,数的有效数字愈多,精度愈高;
  • 指数部分占的位数愈多,则能表示的数值范围愈大。

实型变量的分类

  • 单精度(float型)
  • 双精度(double型)
  • 长双精度(long double型)

在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38-3.4E+38,只能提供七位有效数字;双精度型占8个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。

image.png

实型数据的舍入误差

测试如下:

#include <stdio.h>
int main()
{
    float a, b;
    a = 123456.789e5;
    b = a + 20;
    printf("%f\n", a);
  printf("%f\n", b);
  return 0; 
}

打印:

12345678848.000000
12345678848.000000

显然,a的值已经不准确,整数部分后3位产生误差,同时b在a的基础上加20(两位数,在后边的3位误差之内)也会产生误差。


计算以下表达式的值:


(1)1.0 / 3 * 3等于多少?

(2)3 / 2呢?

(3)1 / 3 * 3呢?


通过程序计算:

#include <stdio.h>
int main()
{
    printf("%f\n", 1.0 / 3 * 3);
  printf("%f\n", 3 / 2);
  printf("%f\n", 1 / 3 * 3);
  return 0; 
}

打印:

1.000000
0.000000
0.000000

5.字符型数据

字符型数据包括字符常量和字符变量。

字符常量

字符常量是用单引号括起来的一个字符。

例如:‘a’、‘b’、’=’、’+’、’?'等都是合法字符常量。


在C语言中,字符常量有以下特点:


  • 字符常量只能用单引号括起来,不能用双引号或其它括号。
  • 字符常量只能是单个字符,不能是字符串。
  • 字符可以是字符集中任意字符,但数字被定义为字符型之后就不能参与数值运算。

  如’5’和5是不同的,'5’是字符常量,不能参与运算。

char a, b;

转义字符

转义字符是一种特殊的字符常量,以反斜线"\"开头,后跟一个或几个字符。

转义字符具有特定的含义,不同于字符原有的意义,故称转义字符。

例如,在之前的练习中printf()函数的格式串中用到的 \n 就是一个转义字符,其意义是回车换行。

转义字符主要用来表示那些用一般字符不便于表示的控制代码。

所有的转义字符及其含义如下:

image.png

转义字符的使用:

#include <stdio.h>
int main()
{
    int a, b, c;
    a = 5, b = 6, c = 7;
    printf(" ab c\tde\rf\n");
    printf("hijk\tL\bM\n");
  return 0; 
}

打印:

fab c   de
hijk    M


相关文章
|
22天前
|
安全 编译器 C语言
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
44 2
|
7天前
|
存储 C语言
【c语言】数据类型和变量
本文介绍了C语言中的数据类型和变量。数据类型分为内置类型和自定义类型,内置类型包括字符型、整型、浮点型等,每种类型有不同的内存大小和取值范围。变量分为全局变量和局部变量,它们在内存中的存储位置也有所不同,分别位于静态区和栈区。通过示例代码和图解,详细阐述了这些概念及其应用。
30 1
|
18天前
|
存储 Java C语言
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
36 3
|
22天前
|
C语言
C语言条件运算符详解
C语言条件运算符,也称为三元运算符,是一种简化if-else语句的表达式,形式为:条件?表达式1:表达式2。当条件为真时,计算并返回表达式1的值;否则计算并返回表达式2的值。它可用于快速实现简单的条件分支逻辑。
|
22天前
|
存储 Java 编译器
初识C语言1——C语言入门介绍
初识C语言1——C语言入门介绍
23 1
|
17天前
|
C语言
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
|
17天前
|
存储 C语言
初识C语言:常量与变量中寻找数据类型
初识C语言:常量与变量中寻找数据类型
|
15天前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
30 3