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


相关文章
|
2月前
|
存储 C语言 C++
【c语言】运算符汇总(万字解析)
今天博主跟大家分享了c语言中各种操作符的功能、使用方法以及优先级和结合性,并且与大家深入探讨了表达式求值的两个重要规则--算数转换和整形提升。学习这些知识对我们的C语言和C++学习都有着极大的帮助。
121 2
|
1月前
|
存储 程序员 编译器
C 语言中的数据类型转换:连接不同数据世界的桥梁
C语言中的数据类型转换是程序设计中不可或缺的一部分,它如同连接不同数据世界的桥梁,使得不同类型的变量之间能够互相传递和转换,确保了程序的灵活性与兼容性。通过强制类型转换或自动类型转换,C语言允许开发者在保证数据完整性的前提下,实现复杂的数据处理逻辑。
|
3月前
|
安全 编译器 C语言
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
74 2
|
1月前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
84 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
1月前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
46 8
|
1月前
|
C语言
【C语言】条件运算符详解 - 《 A ? B : C 》
条件运算符(也称为三元运算符)是C语言中唯一的三元运算符。它通常用于替代简单的 `if-else` 语句。
103 6
|
2月前
|
C语言
c语言运算符
C的运算符有以下几种: 算术运算符:+、-、*、/、% 结合方向自左向右 关系运算符:>、<、==、>=、<=、!= 逻辑运算符:!、&&、|| 位运算符<<、>>、~、|、^、& 赋值运算符:=及符号扩展赋值运算符(+=、-=、*=、/=) 条件运算符:? : 逗号运算符:, 指针运算符:*、& 求字节运算符:sizeof 强制类型转换运算符:((类型)) 分量运算符:.、-> 下标运算符:[]
42 4
|
3月前
|
存储 C语言
【c语言】数据类型和变量
本文介绍了C语言中的数据类型和变量。数据类型分为内置类型和自定义类型,内置类型包括字符型、整型、浮点型等,每种类型有不同的内存大小和取值范围。变量分为全局变量和局部变量,它们在内存中的存储位置也有所不同,分别位于静态区和栈区。通过示例代码和图解,详细阐述了这些概念及其应用。
58 1
|
3月前
|
存储 Java C语言
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
49 3
|
3月前
|
C语言
C语言条件运算符详解
C语言条件运算符,也称为三元运算符,是一种简化if-else语句的表达式,形式为:条件?表达式1:表达式2。当条件为真时,计算并返回表达式1的值;否则计算并返回表达式2的值。它可用于快速实现简单的条件分支逻辑。