[C.C++] C语言学习2

21 0
Honkers 昨天 21:45 | 显示全部楼层 |阅读模式

一.语句和语句的分类

1.空语句

最简单,一个分号就是一条语句,是空语句。

  1. #include<stdio.h>
  2. int main()
  3. {
  4. ;//空语句
  5. return 0;
  6. }
复制代码

一般出现的地方:某位置需要语句,但不需要任何内容,可写一个空语句。

2.表达式语句

即在表达式的后边加上分号

  1. ```c
  2. #include<stdio.h>
  3. int main()
  4. {
  5. int a = 0, b = 0;
  6. b = a + 5;//表达式语句
  7. return 0;
  8. }
复制代码

3.函数调用语句

函数调用的时候,也会加上分号,就是函数调用语句。

  1. #include<stdio.h>
  2. int main()
  3. {
  4. printf("%c\n", 97);//函数调用语句
  5. printf("%c\n", 'a');
  6. return 0;
  7. }
复制代码

4.复合语句

即代码块,成对括号中的代码就构成一个代码块,也被称复合语句。

  1. int main()//函数大括号里的代码就构成复合语句
  2. {
  3. //32-97的字符
  4. //循环
  5. int i = 0;
  6. for (i = 32; i <= 127; i++)//for循环的循环体的大括号也是复合语句
  7. {
  8. printf("%d", i);
  9. if (i % 16 == 15)
  10. printf("\n");
  11. }
  12. return 0;
  13. }
复制代码

5.控制语句

用于控制程序的执行流程,以实现程序的各种结构方式
(C语言支持的三种结构:顺序结构,选择结构,循环结构),
它们由特定的语句定义符组成,C语言有九种控制语句。
可分三类:
1.条件判断语句也叫分支语句:if语句,switch语句;
2.循环执行语句:do while语句,while语句,for语句;
3.转向语句:break语句,goto语句,continue语句,return语句;

二.注释

对代码的说明,编译器会对其忽视,对代码运行无影响,给人
看,便于后期查看,理解。在执行中会被替换成空格。
注释的2种形式:

1./**/的形式

1./* 注释 /
2.printf(“abcdef\n”)/
使用printf打印 */

缺点:不支持嵌套
即当你已经在{}内使用时,再在外面将整个代码注释时无法注释,因为{}前的/
与{}内的
/会匹配,导致不会去注释后面的内容

2.//的形式

将注释内容放在//后方,会将整行内容都注释,只能单行,可放句首,也可句末(C99的标准新增语法)

// 注释

3.特别注意:

两种注释都不能放在双引号内
双引号内的注释符号将被当成字符串的一部分解释为普通符号,失去注释作用,例如:

  1. printf("// hello /* world */");
复制代码

三.C语言中数据类型和变量(详学)

1.数据类型

1.1内置类型

c语言本身就有的。

1.1.1字符型

1.char //character
2.[signed] char //有符号的
3.unsigned cahr //无符号的

1.1.2整型

大体有

short 短整型
int 整型 long
长整型 long long
更长的整型

1.1.3浮点型(小数)

1.float 单精度浮点型
2.double 双精度浮点型
3.long double 更😉😉😉😉。。

1.1.4布尔类型_Bool

C语言原本并未为其单独设置一个类型,而是使用整数0表示假,非零值表示真。

表示真假的变量叫做布尔值

后来在C99引入

布尔类型的使用必须得包含头文件 布尔类型变量的取值是 true或false,即变量flag只能赋true或false

  1. #include<stdio.h>
  2. #include<stdbool.h>
  3. int main()
  4. {
  5. _Bool flag = true;
  6. if (flag)
  7. printf("hehe\n");
  8. return 0;
  9. }
复制代码

小写的bool也可以对flag赋值

  1. #include<stdio.h>
  2. #include<stdbool.h>
  3. int main()
  4. {
  5. bool flag = true;
  6. if (flag)
  7. printf("hehe\n");
  8. return 0;
  9. }
复制代码

1.2自定义类型

自己创造的。

2.各种数据类型的长度

每一种数据类型都有其长度,不同的数据类型,能够创造出长度不同的变量,变量长度不同,存储的数据范围就有所差异。

2.1sizeof操作符

sizeof为操作符,也是关键字,专门用来计算sizeof的操作符数的类型长度,单位字节。
sizeof操作符的操作符数可以是类型,变量或表达式也可。

sizeof(类型)
sizeof 表达式

sizeof的操作数如果不是类型,是表达式时,可省去后边的括号;

sizeof后面的表达式时不真实参与运算的,根据表达式的类型得出大小(即计算下面s的类型的大小);

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a = 10;
  5. short s = 2;
  6. printf("%zd\n", sizeof(s = a + 1));
  7. printf("%d\n", s);
  8. return 0;
  9. }
复制代码

所以第一个打印的2是short的长度
第二个打印的2是s被赋的值.

sizeof的计算结果是size_t类型的。

无符号整数:0和正整数,所以sizeof的返回值用%zd打印

当sizeof后放类型

  1. #include<stdio.h>
  2. int main()
  3. {
  4. printf("%zd\n", sizeof(char));
  5. printf("%zd\n", sizeof(short));
  6. printf("%zd\n", sizeof(int));
  7. printf("%zd\n", sizeof(float));
  8. printf("%zd\n", sizeof(long));
  9. printf("%zd\n", sizeof(long long));
  10. printf("%zd\n", sizeof(short int));
  11. printf("%zd\n", sizeof(long double));
  12. printf("%zd\n", sizeof(double));
  13. //sizeof(char);
  14. return 0;
  15. }
复制代码


图中数字即为对应的类型字节
注:1.计算中的单位
bit 比特位
Byte 字节 1Byte=8bit
KB 1KB=1024Byte
MB 1MB=1024KB
GB …
TB
PB

计算机中使用2进制 o/1
一个二进制位的存储需要一个bit位的空间
2.C语言标准中规定:
sizeof(long)>=sizeof(int)
4/8 4
当sizeof后放表达式

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a = 11;
  5. printf("%zd\n", sizeof(int));
  6. printf("%zd\n", sizeof(a));
  7. printf("%zd\n", sizeof a);
  8. }
复制代码

注:sizeof运算符是以字节为单位给出对象的大小
strlen()函数给出字符串的字符长度

3.signed和unsigned

3.1修饰字符型和整型

signed关键字,表示一个类型带有正负号,包括负值
unsigned关键字,表示该类型不带有正负号,只能表示零和正整数
对于int类型,默认是带有正负号,即其等同于signed int
由于这种默认,关键字signed一般省略不写,写了也不错
但char不确定,取决于编译器的实现,大部分的编译器上char==signed char

注:对有符号的整数打印用%d
对无符号的整数打印用%u

3.2整数变量声明为unsigned的好处

是同样长度的内存能够表示的最大整数值增大一倍
eg.


unsigned int里的int可省

4.数据类型的取值范围

5.变量

5.1变量

c语言中把经常变化的量叫做变量,不变的将常量
变量的语法形式:数据类型+变量名
int a 整型变量
float score 浮点型变量
double weight
bool flag
变量在创建时就给一个值,就叫做初始化

  1. #include<stdio.h>
  2. int main()
  3. {
  4. unsigned int age = 10;//初始化
  5. age = 12;//赋值
  6. printf("%u\n", age);
  7. return 0;
  8. }
复制代码

5.2变量的分类

5.2.1全局变量

在大括号外创建的变量
整个工程都可使用

5.2.2局部变量

大括号内创建的变量

注当局部变量与全局变量同名时,局部变量优先(英语中的就近原则)

6.算数操作符

+,-,*,/,%
这些也都是双目操作符
注:操作符也被叫做运算符,只是翻译不同,意思相同。

6.1+和-

  1. #include<stdio.h>
  2. int main()
  3. {
  4. printf("%d\n", 33 + 44);
  5. return 0;
  6. }
复制代码

33与44叫做操作数
双目操作符即有两个操作数的操作符

6.2*

  1. #include<stdio.h>
  2. int main()
  3. {
  4. printf("%d\n", 33 * 44);
  5. return 0;
  6. }
复制代码

6.3/

除号两端如果是整数,执行的时整数除法,得到的结果也是整数

  1. #include<stdio.h>
  2. int main()
  3. {
  4. printf("%d\n", 16 / 4);//结果为4
  5. printf("%d\n", 10 / 4);//结果为2
  6. return 0;
  7. }
复制代码

如果结果是小数,取商
但如果除号两端有一个或两个小数结果为小数

  1. #include<stdio.h>
  2. int main()
  3. {
  4. printf("%d\n", 16 / 4);
  5. printf("%d\n", 10 / 4);
  6. printf("%f\n", 10.0 / 4);
  7. printf("%f\n", 10 / 4.0);
  8. printf("%f\n", 10.0 / 4.0);
  9. return 0;
  10. }
复制代码

6.4%

表示求模(余)运算,即返回两个整数相除的余值。这个运算符只能用于整数不能用于浮点数

负数求模的规则是:结果的正负号由第一个运算数的正负号决定

7.赋值操作符:=和复合赋值

  1. #include<stdio.h>
  2. int main()
  3. {
  4. unsigned int age = 10;//初始化
  5. age = 12;//赋值
  6. printf("%u\n", age);
  7. return 0;
  8. }
复制代码

在变量创建之处的时候给一个值叫初始化,再给一个叫赋值

7.1连续赋值

int a = 3;
int b = 5;
int c = 7;
c = b = a + 3;//连续赋值,从右往左赋值
但c和b所被赋值不同,会有歧义
int a = 3;
int b = 5;
int c = 7;
b = a + 3;
c = a + 3;

7.2复合赋值

*=,/=,%=

int main()
{
int a = 0;
a = a + 10;
a += 10;

  1. a = a - 3;
  2. a -= 3;
复制代码

a=a+1;
a+=1;
a++;

}
便于写代码

8.单目操作符:++,–,+,-

8.1++,–

前置++


后置++
先使用,后++

同理–也是如此

8.2+和-

这里的+和-为正号和负号


注意负负得正

注:


因为int为整型,3.14为double类型

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

特级红客

关注
  • 3324
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行