首页 > 其他分享 >2024.3.30C笔记

2024.3.30C笔记

时间:2024-04-10 17:04:18浏览次数:21  
标签:语句 main 2024.3 int 笔记 long printf sizeof 30C

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语言结构化语言

可分成以下三类:

  1. 条件判断语句也叫分⽀语句:if语句、switch语句;

  2. 循环执⾏语句:do while语句、while语句、for语句;

  3. 转向语句: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

相关文章

  • GD32F470II的UART+DMA方式的使用笔记
    GD32官方给的DEMO真的是屎一样的存在,仅展示最基本简单的应用案例,拿到实际工程中参考性非常低,也就基本的配置过程具有有限的参考性。在这种环境下,使用UART+DMA的方式完全是瞎用,感觉能用的函数都给用上。UART&DMA配置如下:1/*!2\briefconfigureUSARTDMA3......
  • SQL SERVER 从入门到精通 第5版 第二篇 第7章 SQL数据查询基础 读书笔记
     第7章SQL数据查询基础 SELECT检索数据>.SELECT语句是SQL语句中功能最强大,也是最复杂的语句,所以我决定略过.>.WITH子句指定临时命名的结果集(非临时表),这些结果集称为公用表表达式WITHtemp_nameAS(--在这里定义临时结果集的查询......
  • TACC 集群使用笔记
    1注册账号先在网页上注册账号,之后需要联系导师或者管理员把你添加到对应的集群里去,例如我加入的是Lonestar6集群。之后需要跟着这个教程绑定MFA软件(可以是DUO或者1password)之后登录账号,系统会要求先后输入你的账户密码和MFA的6位数tokenlocal@username$sshuse......
  • 原语笔记:IDDR和ODDR
    IDDR IDDR的工作模式OPPOSITE_EDGE SAME_EDGEModeSAME_EDGE_PIPELINEDMode    参考使用:generategenvari;for(i=0;i<4;i=i+1)begin:iddr_blockIDDR#(.DDR_CLK_EDGE("SAME_EDGE_PIPELINED"),//"OPP......
  • Burp Suite Professional 2024.3.1 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
    BurpSuiteProfessional2024.3.1formacOSx64&ARM64-领先的Web渗透测试软件世界排名第一的Web渗透测试工具包请访问原文链接:BurpSuiteProfessional2024.3.1formacOSx64&ARM64-领先的Web渗透测试软件,查看最新版。原创作品,转载请保留出处。作者主页:sysin......
  • Burp Suite Professional 2024.3.1 for Windows x64 - 领先的 Web 渗透测试软件
    BurpSuiteProfessional2024.3.1forWindowsx64-领先的Web渗透测试软件世界排名第一的Web渗透测试工具包请访问原文链接:BurpSuiteProfessional2024.3.1forWindowsx64-领先的Web渗透测试软件,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgBurpS......
  • Burp Suite Professional 2024.3.1 (macOS, Linux, Windows) - Web 应用安全、测试和
    BurpSuiteProfessional2024.3.1(macOS,Linux,Windows)-Web应用安全、测试和扫描BurpSuiteProfessional,Test,find,andexploitvulnerabilities.请访问原文链接:BurpSuiteProfessional2024.3.1(macOS,Linux,Windows)-Web应用安全、测试和扫描,查看最新版。......
  • kvm笔记
    文章目录1.**KVM**1.1.**安装**1.1.1.**查看CPU是否支持KVM**1.1.2.**通过yum进行安装**1.1.3.**启动并设置开机启动**1.1.4.**创建****ISO系统镜像存放****目录**1.2.**使用虚拟机**1.2.1.**图形化界面**1.2.1.1.**virt-manager打开虚拟机管理器****(****宿主......
  • css学习笔记之展开列表图标动画
    “蓝色界面”风格的填充的星图标欢迎下载填充的星矢量图标,“蓝色界面”风格。格式有png、svg、pdf、html代码。可对填充的星图标、符号进行修改、调整大小、修改颜色。https://igoutu.cn/icon/y0OTcruih2CY/%E5%A1%AB%E5%85%85%E7%9A%84%E6%98%9F今天在这个网站看到了上面类似......
  • 【阅读笔记】RBAC(Role-Based Access Control)模型
    摘自:《凤凰架构:构建可靠的大型分布式系统》周志明著使用访问控制模型的目的所有的访问控制模型,实质上都是在解决同一个问题:“谁(User)拥有什么权限(Authority)去操作(Operation)哪些资源(Resource)。”如果某个系统涉及成百上千的资源,又有成千上万的用户,若要为每个用户访问每个资源都......