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


相关文章
|
1月前
|
C语言
王桂林C语言从放弃到入门课程
课程目标16天,每天6节课,每节40分钟课堂实录,带你征服C语言,让所有学过和没有学过C语言的人,或是正准备学习C语言的人,找到学习C语言的不二法门。适用人群所有学过和没有学过C语言的人,或是正准备学习C语言的人!
25 2
王桂林C语言从放弃到入门课程
|
1月前
|
存储 程序员 C语言
深入探讨C语言中的字符型数据类型及其应用
深入探讨C语言中的字符型数据类型及其应用
13 0
|
1月前
|
存储 程序员 C语言
【c语言】基础数据类型
这篇内容介绍了编程中的数据类型,主要包括常量和变量。常量分为整型、实型(浮点型)、字符型和字符串型。
20 0
|
4天前
|
存储 自然语言处理 编译器
振南技术干货集:振南当年入门C语言和单片机的那些事儿(3)
振南技术干货集:振南当年入门C语言和单片机的那些事儿(3)
|
3天前
|
C语言
C语言中逻辑表达式的深入探讨
C语言中逻辑表达式的深入探讨
11 0
|
28天前
|
存储 编译器 C语言
C语言3🔥:常用的数据类型
C语言3🔥:常用的数据类型
14 0
|
29天前
|
Java C语言 C++
C语言由入门到精通(1)介绍与数据类型
C语言由入门到精通(1)介绍与数据类型
|
1月前
|
存储 安全 编译器
【C/C++ 基本数据类型】C++ 基本数据类型深度解析与C语言对比
【C/C++ 基本数据类型】C++ 基本数据类型深度解析与C语言对比
59 0
|
1月前
|
编译器 C语言
C语言中的运算符
在C语言中,运算符是一种告诉编译器执行特定数学或逻辑操作的符号。这些运算符可以与一个或多个变量组合在一起,形成一个表达式。C语言支持多种类型的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和条件运算符等。
16 0
|
1月前
|
程序员 C语言
在C语言中,typedef是一种用来创建新的数据类型名的关键字
在C语言中,typedef是一种用来创建新的数据类型名的关键字
9 0