2024.3.30笔记
1.转义字符
int main() {
printf("abcd\b");//回退一个字符,隐藏 \b算一个字符
return 0;
}
2.函数调用语句
函数调⽤的时候,也会加上分号,就是函数调⽤语句#include <stdio.h>
int Add(int x, int y)
{
return x+y;
}
int main()
{
printf("hehe\n");//函数调⽤语句
int ret = Add(2, 3);//函数调⽤语句
return 0;
}
3.控制语句
控制语句⽤于控制程序的执行流程,以实现程序的各种结构方式(C语⾔⽀持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语⾔有九种控制语句。 ------C语言结构化语言
可分成以下三类:
-
条件判断语句也叫分⽀语句:if语句、switch语句;
-
循环执⾏语句:do while语句、while语句、for语句;
-
转向语句:break语句、goto语句、continue语句、return语句。
4.注释
注意: / * 注释*/ 这种注释方法不能嵌套,在第一个 * /他就会结束注释,如果有多个* / 他后面的就不会被注释掉
1./*注释*/ 单行注释 2./* 注释 */ 多行注释
- 不管是哪⼀种注释,都不能放在双引号⾥⾯。 双引号⾥⾯的注释符号,会成为字符串的⼀部分,解释为普通符号,失去注释作⽤。 printf("// hello /* world */ "); 上⾯中,双引号⾥⾯的注释符号,都会被视为普通字符,没有注释作⽤。
- 注释会被替换 编译时,注释会被替换成⼀个空格,所以 min/* 这⾥是注释*/Value 会变成 min Value ,⽽不是 minValue 。
5.数据类型
内置类型(C语言自带的)
1.字符型(char)
2.整形(int)
-
short [int] int可不写省略- 短整型
-
int - 整形
-
long-长整型
-
long long - 更长的整形
3.浮点型(float) 小数->浮点数->浮点型
-
float - 单精度浮点型 要求越高(范围更大)
-
double - 双精度浮点型
-
long double-
4.布尔类型
C 语⾔原来并没有为布尔值单独设置⼀个类型,⽽是使⽤整数 0 表⽰假,⾮零值表⽰真。在 C99 中也引⼊了 布尔类型 ,是专门表示真假的。
-
_Bool 变量名 = true 或 false //初始化
#include <stdbool.h> //引入布尔值的头文件
#include <stdio.h>
int main() {
_Bool flag = true;
bool flag = flase; //两种方式
if (flag) {
printf("I love you;");
}
return 0;
}
各种数据类型的长度
sizeof的应用
每⼀种数据类型都有自己的⻓度,使⽤不同的数据类型,能够创建出⻓度不同的变量,变量⻓度的不同,存储的数据范围就有所差异。
-
sizeof 是⼀个关键字,也是操作符,专⻔是⽤来计算sizeof的操作符数的类型⻓度的,单位是字节。
-
sizeof 操作符的操作数可以是类型,也可是变量或者表达式。
-
字节,计算中的单位 一个二进制的存储需要一个bit位的空间
//sizeof 计算字符长度(字节)
int main() {
printf("%zd\n", sizeof(char)); //1字节
printf("%zd\n", sizeof(short));
printf("%zd\n", sizeof(int));
printf("%zd\n", sizeof(long));
printf("%zd\n", sizeof(long long));
printf("%zd\n", sizeof(float));
printf("%zd\n", sizeof(double));
};
/*
1
2
4
4
8
4
8 字节
*/
-
sizeof计算变量和表达式括号可以省略,但是计算数据类型不可以,不然会报错
int main(){
int a = 10
printf("zd\n", sizeof a);
printf("zd\n", sizeof int);//报错
}
-
sizeof 返回size_t的值,用 "%zd" 打印
int main() {
printf("%zd\n", sizeof(char)); //1字节
};
-
sizeof不会计算表达式
// sizeof中表达式不计算
int main() {
short a = 1;
int i = 3;
printf("%zd\n", sizeof(a = i + 1)); //不会去计算该表达式,只取a的字节长度2
printf("a = %d\n", a); //这里还是输出a = 1
return 0;
}
signe 和 unsigned
C 语⾔使⽤ signed 和 unsigned 关键字修饰 字符型和整型 类型的。
-
signed 关键字,表⽰⼀个类型带有正负号,包含负值;直接 int 变量 = 22即可,
-
unsigned 关键字,表⽰该类型不带有正负号,只能表示零和正整数。
对于 int 类型,默认是带有正负号的,也就是说 int 等同于 signed int 。
由于这是默认情况,关键字 signed ⼀般都省略不写,但是写了也不算错。
int a = 4 //负数和正数都可以 unsigned int a = 6 //只能是正整数和0
-
注意,char类型有符号和无符号取决于编译器,有些编译器不一样,大部分都是 signed char
-
对于 int 类型,默认是带有正负号的,也就是说 int 等同于 signed int 。
有符号数,一定要用%d输出
无符号数用%u输出,不然会出现错误结果,%u只打印正整数和0,不打印负数
int main() {
int a = -100;
printf("%d\n", a); //有符号数,一定要用%d输出
printf("%u", a); //无符号数用%u输出,不然会出现错误结果
}
声明unsigned好处
整数变量声明为 unsigned 的好处是,同样⻓度的内存能够表⽰的最⼤整数值,增⼤了⼀倍。比如,16位的 signed short int 的取值范围是:-32768~32767,最⼤是32767;而
unsigned short int 的取值范围是:0~65535,最大值增大到了65,535。32位的 signed
int 的取值范围可以参看 limits.h 中给出的定义。
#define SHRT_MIN (-32768) //有符号16位整型的最⼩值 #define SHRT_MAX 32767 //有符号16位整型的最⼤值 #define USHRT_MAX 0xffff //⽆符号16位整型的最⼤值 #define INT_MIN (-2147483647 - 1) //有符号整型的最⼩值 #define INT_MAX 2147483647 //有符号整型的最⼤值
数据类型的取值范围
上述的数据类型很多,尤其数整型类型就有short、int、long、long long 四种,为什么呢?
其实每⼀种数据类型有⾃⼰的取值范围,也就是存储的数值的最⼤值和最⼩值的区间,有了丰富的类型,我们就可以在适当的场景下去选择适合的类型。如果要查看当前系统上不同数据类型的极限值:
limits.h ⽂件中说明了整型类型的取值范围。
float.h 这个头⽂件中说明浮点型类型的取值范围。 用everything在电脑中找到该文件可以查看
为了代码的可移植性,需要知道某种整数类型的极限值时,应该尽量使⽤这些常量。
• SCHAR_MIN , SCHAR_MAX :signed char 的最⼩值和最⼤值。
• SHRT_MIN , SHRT_MAX :short 的最⼩值和最⼤值。
• INT_MIN , INT_MAX :int 的最⼩值和最⼤值。
• LONG_MIN , LONG_MAX :long 的最⼩值和最⼤值。
• LLONG_MIN , LLONG_MAX :long long 的最⼩值和最⼤值。
• UCHAR_MAX :unsigned char 的最⼤值。
• USHRT_MAX :unsigned short 的最⼤值。
• UINT_MAX :unsigned int 的最⼤值。
• ULONG_MAX :unsigned long 的最⼤值。
• ULLONG_MAX :unsigned long long 的最⼤值。
变量
C语⾔中把经常变化的值称为变量,不变的值称为常量。
变量创建的语法形式是这样的
-
变量需要赋值一个值,初始化
#include <stdbool.h>
int main(){
unsigned int age = 0; //创建一个变量
printf("%u",age) // 需要初始化一个值 age = 0
char name;
bool flag;
}
-
全局变量
#include <stdio.h>
int global = 2023;//全局变量 整个代码都需要使用
int main()
{
int local = 2018;//局部变量 局部区域使用
printf("%d\n", local);
printf("%d\n", global);
}
-
局部变量,
全局和局部都可以使用时,局部优先使用
int main(){
{
int a = 1;
printf("%d", a);
}
printf("%d", a); //a 局部变量只能在大括号内使用 ,会报错未定义
}
-
全局变量和局部变量在内存中存储在哪⾥呢?
⼀般我们在学习C/C++语⾔的时候,我们会关注内存中的三个区域:栈区、堆区、静态区。
1.局部变量是放在内存的栈区
2.全局变量是放在内存的静态区
3.堆区是⽤来动态内存管理的(后期会介绍)
6.算数操作符
在写代码时候,⼀定会涉及到计算。
C语⾔中为了⽅便运算,提供了⼀系列操作符,其中有⼀组操作符叫:算术操作符。分别是: + - * / % ,这些操作符都是双⽬操作符。
注:操作符也被叫做:运算符,是不同的翻译,意思是⼀样的。
+ 和 - 操作符
+ 和 - ⽤来完成加法和减法。
+ 和 - 都是有2个操作数的,位于操作符两端的就是它们的操作数,这种操作符也叫双目操作符。
#include <stdio.h>
int main()
{
int x = 4 + 22;
int y = 61 - 23;
printf("%d\n", x);
printf("%d\n", y);
return 0;
}
* 操作符
运算符 * ⽤来完成乘法。
#include <stdio.h>
int main()
{
int num = 5;
printf("%d\n", num * num); *//* *输出* *25*
return 0;
}
"/" 除法 (重点)
除号的两端如果是整数,执行的是整数除法,得到的结果也是整数。如果得到的结果不是整数,那就只取整数部分,丢弃小数部分
#include <stdio.h>
int main()
{
float x = 6 / 4;
int y = 6 / 4;
printf("%f\n", x); // 输出 1.000000 不会输出1.5
printf("%d\n", y); // 输出 1
return 0;
}
-
想输出小数,必须 "/" 两端其中一个是浮点数
#include <stdio.h>
int main()
{
float x = 6 / 4.0;//两端其中一个是浮点数
int y = 6 / 4;
printf("%f\n", x); // 输出 1.500000
printf("%d\n", y); // 输出 1
return 0;
}
取余运算 %
运算符 % 表⽰求模(余)运算,即返回两个整数相除的余值。这个运算符只能⽤于整数,不能⽤于浮点数。
-
负号取决于第一个操作数
//取余
int main() {
printf("%d", 10 % 3);//不能用于小数,10/3 3...1 结果1
printf("%d\n", 11 % -5); // 1 负号取决于第一个操作数
printf("%d\n", -11 % 5); // -1
return 0;
}
赋值操作符:=和复合赋值
在变量创建的时候给⼀个初始值叫初始化,在变量创建好后,再给⼀个值,这叫赋值。
-
不建议使用连续赋值
int a = 3; int b = 5; int c = 0; c = b = a+3;//连续赋值,从右向左依次赋值的。 3+3=6赋值给b然后再给c
-
建议拆开使用
int a = 3; int b = 5; int c = 0; b = a+3; c = b;
-
符合赋值符,自增和自减
int a = 10; a = a+3; a = a-2; --------------------- int a = 10; a += 3; a -= 2;
单目操作符 ++、--、+、-
-
++a 先自己+1再赋值给变量
-
a++ 先赋值给变量 再自加1
int main() {
//计算⼝诀:先+1,后使⽤;
int a = 10;
int b = ++a;//++的操作数是a,是放在a的前⾯的,就是前置++
printf("a=%d b=%d\n", a, b);
//先使⽤,后+1
int a = 10;
int b = a++;//++的操作数是a,是放在a的后⾯的,就是后置++
printf("a=%d b=%d\n", a, b);
return 0;
}
-
注意
int main(){
int a = 5;
printf("%d",a--); //先赋值后自减1 这里输出还是5
printf("%d",a); //再次输出 才是 4自减
return 0;
}
强制类型转换
-
一般不使用
int main(){
int a =(int)3.14;
printf("%d\n",a) //输出 3
return 0;
}
标签:语句,main,2024.3,int,笔记,long,printf,sizeof,30C
From: https://blog.csdn.net/m0_62249858/article/details/137582727