C语言学习2

一.语句和语句的分类

1.空语句

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

#include<stdio.h>
int main()
{
	;//空语句
	return 0;
}

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

2.表达式语句

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


```c
#include<stdio.h>
int main()
{
	int a = 0, b = 0;
	b = a + 5;//表达式语句
	return 0;
}

3.函数调用语句

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

#include<stdio.h>
int main()
{
	printf("%c\n", 97);//函数调用语句
	printf("%c\n", 'a');
	return 0;
}

4.复合语句

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

int main()//函数大括号里的代码就构成复合语句
{
	//32-97的字符
	//循环
	int i = 0;
	for (i = 32; i <= 127; i++)//for循环的循环体的大括号也是复合语句
	{
		printf("%d", i);
		if (i % 16 == 15)
			printf("\n");
	}
	return 0;
}

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.特别注意:

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

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引入

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

#include<stdio.h>
#include<stdbool.h>
int main()
{
	_Bool flag = true;
	if (flag)
		printf("hehe\n");
	return 0;
}

小写的bool也可以对flag赋值

#include<stdio.h>
#include<stdbool.h>
int main()
{
	bool flag = true;
	if (flag)
		printf("hehe\n");
	return 0;
}

1.2自定义类型

自己创造的。

2.各种数据类型的长度

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

2.1sizeof操作符

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

sizeof(类型)
sizeof 表达式

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

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

#include<stdio.h>
int main()
{
	int a = 10;
	short s = 2;
	printf("%zd\n", sizeof(s = a + 1));
	printf("%d\n", s);
    return 0;

}

在这里插入图片描述所以第一个打印的2是short的长度
第二个打印的2是s被赋的值.

sizeof的计算结果是size_t类型的。
在这里插入图片描述

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

当sizeof后放类型

#include<stdio.h>
int main()
{
	printf("%zd\n", sizeof(char));
	printf("%zd\n", sizeof(short));
	printf("%zd\n", sizeof(int));
	printf("%zd\n", sizeof(float));
	printf("%zd\n", sizeof(long));
	printf("%zd\n", sizeof(long long));
	printf("%zd\n", sizeof(short int));
	printf("%zd\n", sizeof(long double));
	printf("%zd\n", sizeof(double));
	
	//sizeof(char);
	return 0;
}


图中数字即为对应的类型字节
注: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后放表达式

#include<stdio.h>
int main()
{
	int a = 11;
	printf("%zd\n", sizeof(int));
	printf("%zd\n", sizeof(a));
	printf("%zd\n", sizeof a);
}

注: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
变量在创建时就给一个值,就叫做初始化

#include<stdio.h>
int main()
{
	unsigned int age = 10;//初始化
	age = 12;//赋值
	printf("%u\n", age);

	return 0;

}

5.2变量的分类

5.2.1全局变量

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

5.2.2局部变量

大括号内创建的变量

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

6.算数操作符

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

6.1+和-

#include<stdio.h>
int main()
{
	printf("%d\n", 33 + 44);
	return 0;
}

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

6.2*

#include<stdio.h>
int main()
{
	printf("%d\n", 33 * 44);
	return 0;
}

6.3/

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

#include<stdio.h>
int main()
{
	printf("%d\n", 16 / 4);//结果为4
	printf("%d\n", 10 / 4);//结果为2
	return 0;
}

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

#include<stdio.h>
int main()
{
	printf("%d\n", 16 / 4);
	printf("%d\n", 10 / 4);
	printf("%f\n", 10.0 / 4);
	printf("%f\n", 10 / 4.0);
	printf("%f\n", 10.0 / 4.0);
	return 0;
}

在这里插入图片描述

6.4%

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

负数求模的规则是:结果的正负号由第一个运算数的正负号决定
在这里插入图片描述

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


#include<stdio.h>
int main()
{
	unsigned int age = 10;//初始化
	age = 12;//赋值
	printf("%u\n", age);

	return 0;

}

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

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;

a = a - 3;
a -= 3;

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

}
便于写代码

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

8.1++,–

前置++

在这里插入图片描述
后置++
先使用,后++
在这里插入图片描述
同理–也是如此

8.2+和-

这里的+和-为正号和负号
在这里插入图片描述
注意负负得正

注:在这里插入图片描述
因为int为整型,3.14为double类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值