【C语言基础】Chap. 2. 基本概念

本文详细介绍了C语言的基本概念,包括数据类型(如char、int、float、double等)、变量与常量(全局与局部变量、作用域和生命周期)、字符串、转义字符和注释。此外,还涉及选择语句、循环语句、函数的定义和编程,以及数组、输入和输出(printf和scanf函数)等核心概念。
摘要由CSDN通过智能技术生成

1. 数据类型

计算机中运行的程序是为了解决现实世界中的问题,因此撰写程序的代码也必须拥有描述现实事物的能力,比如数字、文字,又比如人的年龄、商品的价格等。

为了实现这种能力,C语言拥有一套类型系统:

  • char:字符数据类型。
  • short:短整型。
  • int:整型,即integer,用于存储整数(包括正负)。
  • long:长整型。
  • long long:更长的整型。
  • float:单精度浮点数,即float-point,可以存储较大的数值,并且可以带小数位。
  • double:双精度浮点数。

:float(和double)进行算术运算时会比int类型慢。且float类型的变量存储的数值往往只是实际数值的一个近似值,如存进0.1,会得到0.099 999 999 999 999 87,这是舍入造成的误差。float类型的数值通常分为两部分存储:小数部分(或称尾数部分)和指数部分。如12.0就可以以1.5×2^3的形式存储,其中1.5是小数部分,而3是指数部分。有些编程语言将其称为real类型。

并且每种类型都在存储的空间中占有一定的大小,我们可以用sizeof这个操作符来计算类型变量所占空间的大小。


 

printf("%d\n", sizeof(char)); // 1
printf("%d\n", sizeof(short)); // 2
printf("%d\n", sizeof(int)); // 4
printf("%d\n", sizeof(long)); // 4 C语言标准:sizeof(long) >= sizeof(int)
printf("%d\n", sizeof(long long)); // 8
printf("%d\n", sizeof(float)); // 4
printf("%d\n", sizeof(double)); // 8

注意,char类型指的是如a、b这样的字符;而不是Hello world这样的字符串

C语言有没有字符串类型呢?答案是没有,但实际的使用中是存在的,因为可以用一连串的字符来组成一个字符串,可以将其理解为字符的数组

字符一般用单引号''括起来,而字符串则用双引号""括起来。

注1:上面说的类型的大小是以字节为单位的。

注2:在计算机存储中有如下单位及其换算:

  • bit - 比特位
  • byte - 字节 == 8 bit
  • kb - 千字节 == 1024 byte
  • mb - 兆字节 == 1024 kb
  • gb - 千兆字节 == 1024 mb
  • tb - 太字节 == 1024 gb
  • pb - 拍字节 == 1024tb

2. 变量和常量

刚刚提到sizeof可以计算变量的大小,变量是个什么样的概念呢?

在数学题中,我们经常会见到未知数x,在不同的题目x可以被直接赋值,也可以被计算出来再赋值。变量与之含义类似。

我们再思考一下,在现实世界中,有许多数据是不可变的,比如一个人的血型,比如圆周率。但与此同时,有些数据却是不断改变的,比如一个人从出生后不断增长的年龄,又比如一座工厂每年的产量。

在C语言中也有描述这样的变与不变的数据的概念,即变量常量,它们的功能便是存储数据。

变量和常量同样有自己的数据类型,类型会影响变量的存储方式以及允许对变量进行的操作。

1.变量的分类

C语言中有两种变量,分别是全局变量局部变量

简单理解的话,全局变量是在{}外部定义的,整个工程都能够使用它;而局部变量是在{}内部定义的,只能在{}内部使用——但实际上只能在单独的.c文件里使用的静态变量也算是局部变量的一种。

当全局变量与局部变量的名字冲突时,局部优先,但一般不建议把全局变量和局部变量的名字设成相同的。

使用变量前需要先进行声明(为编译器所做的描述),一般流程是指定变量类型,陈述变量名(也称标识符identifier,变量名由程序员自定义)。


 

//写一个代码求2个整数的和
int main()
{
    int a = 0;
    int b = 0;
    int sum = 0;
    scanf("%d %d", &a, &b); //scanf函数是与printf对应的输入函数,f同样是format的意思
    //双引号中的格式串用于指定输入的格式
    //&运算符是用于读取其后变量的地址的,后续会做更多解释
    sum = a + b;
    printf("sum = %d\n", sum); return 0;
}

注1:当报错'scanf': This fu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值