C语言学习

一.数据和C

1.变量与常量数据

常量:事先设定好,在整个程序的运行过程中没有变化,例如:weight = 10,10就是常量。
变量:数据类型可以在程序运行过程中发生变化或者被赋值,例如:weight = 10,weight就是变量。

2.数据类型和关键字

数据类型关键字:

最初K&R给出的关键字C90标准添加的关键字C99标准添加的关键字
intsigned_Bool
longvoid_Complex
short_Imaginary
unsigned
char
float
double

因此我们可以分析出计算机存储时分为整数类型和浮点数类型

同数学一样,整数类型是没有小数的数,例如4,-3。 而像4.00,-3.00就是浮点数
浮点数可以是 2.75,8.6E9。也可以是2e-8这种

一般来讲浮点数通常只是实际值的近似值,而且浮点运算比整数运算慢,在这过程中损失的精度也越多

3.C语言的基本整数数据类型

  1. int类型,为有符号的整型,可以是正整数,也可以是负整数或零,取值范围在-32768~~32767之间,即2的15次方,最高位取0表示正数,取一表示负数,构成2的16位,不过现在一般而言是32位计算机,int就是32位,依次类推。
  2. short int类型(简写为short),占用的存储空间可能比int小,但不会比int多,用于较小数值的场合,也有符号。
  3. long int类型(简写为long),占用的存储空间可能比int多,但不会比int少,用于较大数值的场合,也有符号。
  4. long long int(简写为long long)占用的空间可能比long多,适用于数值较大的场合,该类型至少占64位,也有符号。
  5. unsigned int(可以简写为unsigned)用于非负值的场合,用于表示正负号的最高位用于取值,故可以表示更大的数,它也可以添加到上面的类型,如 unsigned short,unsigned long等。
    signed 强调有符号类型的意图,如 short ,signed short,signed short int 都表示同一类型。

占用空间大小关系为short <= int <= long <= long long(64位)

注意事项

  • 如果在long类型和int类型占用空间相同的机器上面编写代码,当确实需要32位的整数时,一般使用long类型,便于移植到16位机器上运行时任然可以正常运行,同理64位用longlong而不是long,向多取。
  • 当有些情况下需要以long类型存储一个小数字时,通常在值的末位添加小写的l或大写的L,用大写更好,因为小写l更像1,例如7L,同理7LL表示以long long类型存储7,另外用字母u或U表示unsigned,10ULL,7LLU,10UL。当然也可以用于八进制和十六进制0x10ul(0x表示十六进制),020ULL(0表示八进制)
  • int类型被认为是计算机处理整数数据最高效的类型

4.使用字符:char 类型

char 类型用于存储字符,通常被定义为8位的存储单元。从技术层面看,char 是整数类型,因为实际存储的是数字而非字符,最常用来表示ASCII (0~127位)。C语言把一字节定义为char类型占用的位(bit)数

声明char类型变量

char grade=‘A’;
char grade=“A”;//错误,此时的“A”是一个字符串

由于char实际上是以数值形式存储,所以也可以用数值来赋值,不过一般不建议这样char grade=65;
C语言将字符常量视为 int 类型而不是 char 类型,因此char = ‘ABCD’;时,在char为8位的ASCII码时,只有最后八位有效,即等同于char = ‘D’;

非打印字符 转义序列

转义序列含义
\a警报 Bell(speaker beeps)
\b退格Backspace(non-erase)
\f换页Form feed/clear screen
\n换行New line
\r回车Carriage Return
\t水平制表符Table
\v垂直制表符Vertical tab
\\反斜杠
\’单引号
\"双引号
\?问号
\0oo八进制值(oo必须是有效的八进制数,即每个o都可以表示0~7中的一个数)
\xhh十六进制值(hh必须是有效的十六进制数,即每个h都可以表示0~f中的一个数)

\b、\f、\n、\r、\t 和 \v 是常用的输出设备控制字符,它们都会对活跃位置(显示设备中下一个字符即将出现的位置)产生影响。

\b  退格 (BS) ,将当前位置移到前一个字符,但不会删除后面的,但是有可能会被新内容覆盖
\f	换页 (FF),将当前位置移到下页开头
\n	换行 (LF) ,将当前位置移到下一行开头
\r	回车 (CR) ,将当前位置移到本行开头,但不会删除后面的,但是有可能会被新内容覆盖
\t	水平制表 (HT) (跳到下一个 TAB 位置)

5. _Bool类型

C99标准添加了_Bool 类型,用于表示布尔值,即逻辑值 truefalse,值0表示false,值1表示true,_Bool 类型也是一种整数类型。但是它仅仅只占用1位存储空间

6.C语言的基本浮点数据类型

1. float

必须至少能够表示6位有效数字,而不是小数点后6位。取值范围为10e-37~10e37。通常系统存储一个浮点数要占用32位,其中八位表示指数的值和符号,其余24位表示非指数部分及其符号。

2.double

双精度 ,占用64位同 float 最小取值范围相同,但是至少必须表示10位有效数字,但是由于某些系统的缘故,double 类型的值至少表示13位有效数字。

3. long double

比 double 类型更高的精度要求

注意事项

  • 正号可以省略。可以没有小数点(2E5)或指数部分(13.23)但不能同时省略,可以省略小数部分(4.E5)或整数部分(.4E-3)但也不能同时省略
    举例有效浮点类型100.、 .4E-5、 4.e2、 .2

  • 不能在浮点型常量中间加空格 默认情况下,编译器假定浮点型常量是 double 类型的精度 some = 4.0*2.0;//some是float型变量
    4.0和2.0会被存储为64位的 double 类型,使用 双精度进行计算,然后将乘积切断成 float 类型的精度,虽然精度高,但是运行时间长。因此在浮点数后加f或F可以覆盖默认设置,加L可以变成 long double 类型。

  • 当没有在函数原型中显示说明参数类型的函数(如printf())传递参数时,C编译器会把float类型的值转换成double类型的值

  • 浮点数上溢时,用 printf() 显示该值为 inf

  • 浮点数下溢时,会损失原有精度。有专门的函数计算是否会低于正常值

  • 特殊的浮点值NaN(not a number),表示未定值

7.复数和虚数类型

C语言有3种复数类型 float_Complex、double_Complex 和 long double_Complex。例如float_Complex 中含有两个 float类型的值,分别表示复数的实部和虚部
类似地,C语言的三种虚数类型是 float_Imaginary、double_Imaginary 和 long double_Imaginary。

8.一些补充

  1. sizeof()函数可以用来查询当前系统的指定类型的大小,在printf()函数中用%zd打印。
    例如 printf("Type int has a size of %zd bytes.\n",sizeof(int));
  2. C编译器在把浮点数转换为整数时,会直接丢弃小数部分,而不是四舍五入。
  3. C标准明确规定了何时把缓冲区的内容发送到屏幕:当缓冲区满、遇到换行字符、或者需要输入时(printf()函数等)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值