李想认识了各种古语c语言的各种的基本法则,并运用c语言,写出了他的第一个程序,但紧随而来的就是下一重考验数据的类型和变量
1.语句
c语言是由一条一条语句而成,语句像功法的碎片一样,把各种法则联合起来,就形成了一种特定的强大的功法的显现,语句可以分为五种
1.空语句,以无为为主,推崇无为即有为
2.表达式语句,他是变量的各种发展
3.函数调用语句,函数就像一种功法,功法越强,你使用你就越强,但它的缺点也有很多
4.复合语句,即是各种语句的组合
5.控制语句,它是你功法的核心,控制功法的走向
1.1空语句
空语句是最简单,它什么都不做,有时比做了还有效
#include<stdio.h>
int main()
{
;//空语句,什么也不做
return 0;
}
当功法伤害自身,你应该很么都不做才好
1.2表达式语句
表达式语句就是在表达式后面加分号,是一个变量的动态
#include<stdio.h>
int main()
{
int a = 10;
int b = 5;
a + b; //表达式
a* b;
a > 5;//表达式
a = b + 5; //表达式
return 0;
}
1.3函数调用语句
知道函数的名字和函数的需要什么参数,就可以使用函数.
犹如学会了功法,当想运用功法只有想到名字和使用功法的条件就能使用
#include<stdio.h>
int Add(int x, int y)
{
return x + y;
}
int main()
{
printf("hello, Forever");//函数调用语句
int c = Add(5, 3);//函数调用语句
return 0;
}
1.4复合语句
即是各种语句的复合
#include<stdio.h>
int Add(int x, int y)
{
return x + y;
}
int main()
{
int c = Add(5, 3) + 5; ;;; //复合语句
return 0;
}
1.5控制语句
c语言支持三种结构:顺序结构,选择结构,循环结构
条件判断语句:if语句,switch语句
循环语句:while语句 for语句 do while语句
转向语句:break语句,goto语句,continue语句,return语句
2注释
注释就是说明这条语句,这个函数的功能是什么等等,注释帮助我们更好理解程序,但对程序没有影响
如学习功法,有高人指点,对功法没有影响,但对你了解功法有很多的帮助
注释有两种方式
1./**/ 的注释方式,这种注释的特点是,在其中间写的任何东西都是注释,/* 直达遇到第一个*/才会结束
/* 这是一个注释*/
/*
这也是一个注释
*/
这种注释可以放在语句当中
int main()
{
int c = Add(5/* 这函数的参数 */, 3) + 5; ;;; //复合语句
return 0;
}
/*直到遇到一个注释才结束
#include<stdio.h>
int Add(int x, int y)
{
/*
return x + y;/*
/* /*--这里都被当成注释的部分
}
int main() */
{
int c = Add(5, 3) + 5;
return 0;
}
所以这种注释不推荐嵌套
2. // 双斜杠的注释方式,这种是注释从双斜杠开始,注释一行结束
//这是注释
// int main 我可以注释一行
int main()
{
}//main函数没有被注释
注意点不能把注释写到字符串中去,会被当成字符串
3.注释会被替换
程序编译之后,会把注释部分当作一个空格,
int p/* 会被当成空格 */a =0
//就不是pa了
3.数据类型介绍
数据类型就是个中相似的数据集合在一起,有整型类型,字符串类型,浮点类型等
数据类型的总类
3.1字符型
char;
signed char;
unsigned char;
3.2整型类型
short int;//短整型
signed short int;
unsigned short int;
int;//整型
signed int;
unsigned int;
long int;//长整型
signed long int;
unsigned long int;
long long int;//更长的整型
signed long long int;
unsigned long long int;
3.3浮点型
float; //单精度浮点型
double; //双精度浮点型
long double;
3.4布尔型
在原本的c语言当中,用0代表假,1代表真,在C99后才引入的布尔型,使用布尔必须引用头文件<stdbool.h>
布尔有两个值true和false
#include<stdbool.h>
int main()
{
bool a = true;
if (a)
printf("a is true");
a = false;
printf("a is false");
}
1.5数据类型的长度
数据类型的长度用字节为单位表示,数据类型长度的不同,数据存放在内存中占用的空间就不同
3.5.1sizeof操作符
sizeof是关键字也是操作符,专门用来计算数据类型的大小,单位是字节
sizeof操作符的操作数,可以是数据类型,也可以是表达式
printf("%zd\n",sizeof(int)) //数据类型
printf("%zd\n",sizeof(3 + 5)) //表达式
·sizeof的操作数不是类型,而是表达式,括号可以省略
·sizeof的表达式是不参与运算的,根据表达式的类型来确定的大小
·sizeof计算的值的类型是size_t ,因为以前sizeof的类型没有规定,它的值类型可以是unsigned int,unsigned long ,unsigned long long 三种,对程序的可移值性有影响,所以专门用size_t类型来接收
#include<stdio.h>
int main()
{
int a = 10;
printf("%zd\n", sizeof(a)); //表达式可以省略括号
printf("%zd\n", sizeof a); //表达式可以省略括号
printf("%zd\n", sizeof 3 + 5 ); //表达式可以省略括号
printf("%zd\n", sizeof(int)); //是数据类型不能省略
return 0;
}
3.5.2数据类型长度
上述结果是在vs2022 64位下的运算值
3.5.3 sizeof的表达是不参与运算
在sizeof()中的表达式不进行运算,sizeof的类型是表达的存储类型决定,i+2是整型运算但最终存到了short类型中,3+3.5555最终存在了浮点型中,值是类型为浮点型
表达式是在在程序运行期间才执行,sizeof在编译期间就已经被删除了。