首页 > 其他分享 >c语言笔记2

c语言笔记2

时间:2023-08-13 11:45:42浏览次数:47  
标签:语句 break 语言 笔记 运算符 条件 表达式 字节

c语言笔记2(关键字,数据类型,运算符,流程控制语句)

1. c语言中的关键字

学习关键字的目的是了解存在哪些关键字,另外,在定义变量名、函数名(标识符命名)避免使用关键字

1.1 数据类型相关的关键字

char 字符类型,占1个字节,ASCII表有128字符,每个字符占1个字节。
short 短整型,占2个字节
int 整型,占4个字节
long 长整型,32位机占4B,64位机占8B
float 浮点型(单精度)占4B
double 浮点型(双精度)占8B
unsigned 无符号(数据二进制表示的最高位是数据位)
signed 有符号(数据二进制表示的最高位是符号位,0正1负)
void 无类型(任意类型)
struct 结构体
union 共用体
enum 枚举

1.2 存储相关的关键字

register 寄存器存储变量(建议编译器)
static 静态存储变量(多线程中应用较多)
const 只读变量
auto 自动变量(接受某一个函数的返回值,自动确认变量的数据类型)
extern 声明变量或函数时使用

1.3 流程控制相关的关键字

分支相关:

if,else
switch,case,default,break
goto

循环相关:

for
while,do
break
continue

1.4 其他关键字

sizeof() 计算变量的所占内存空间大小的,返回是字节单位
typedef 类型重命名,如size_t=>typedef unsigned long size_t;
volatile 防止编译器优化,声明变量是存储在内存中。

扩展:如果在编译是出现了warning,两种做法

1.按照警告的提示修改
2.编译时,添加去除警告的参数,依据警告提示中的[]内容,在-w后加no-

2. 数据类型

2.1 基本数据类型

整数类型:

char ,字符(小整型), 1B
short int或short , 短整型 2B
int 整型,4B
long int 或long,长整型,(32位机)4B/8B

char一般是引用ASCII表字符,每一个字符都有对应的数值,又称之为小整型。

实型:

float 单精度,4B,常量表示: 0.1f,1.25f
double 双精度,8B,常量表示:0.1,1.25,3.333,12e-3,12e3

2.2 构造类型

由若干个相同或不同类型数据构成的集合,这种数据类型被称为构造类型。包含:数组、结构体struct、共用体union、枚举enum

2.3 类型转换

原则:小字节类型转成大字节类型,保证数据的精度不会丢失,由编译自动完成。

大字节类型转小字节类型,可能存在丢失数据情况。由用户(开发人员)自己转换。

2.4 进制转换

计算机存储的数据都是二进制,即0,1

为方便数据处理,一般采用字节单位处理数据。1个字节是8位二进制。二进制表示中,左边是高位,右边是地位,如01000100。常量表示:以0b开头,如0b10

八进制:由0-7的8个数字组成。常量:0开头,如071,010

十进制:由0-9的10个数字组成

十六进制:由0-9,a-f 10个数字+6个字母组成,a表示10,f表示15,常量:以0x或0x开头,如0x10

1.十进制转非十进制:十进制的数值除以进制数(2,8,16)取余,倒取,商小于进制数时停止除法取余。
2.非十进制转十进制:累加所有位面数乘以进制数(2,8,16)的(位数-1)的次幂
3.非十进制之间转换:按8421或421格式拆分或组合

2.5 变量

数据可能发生变化的量(程序运行时,变量值可能被修改)

语法:

数据类型 变量名;//定义变量
数据类型 变量名=常量; //定义并初始化赋值

变量的命名规则:

1)以字母、下划线、$开头、其他可以使字母、数字、下划线、$
2)不能使用关键字
3)区分大小写
4)一般采用驼峰命名(大驼峰或者小驼峰)
  小驼峰:首字母小写,之后的每个单词的首字母大写
  大驼峰:每个单词的首字母大写

2.6 原码、补码、反码

1) 正数或无符号的数:原码、反码、补码相同
2) 负数存储,对他的原码取反,再加1变成补码
    如-20
    原码:                               1001 0100
    反码(符号不变,其他数据位取反):        1110 1011
    补码(反码+1):                       1110 1100

3. c语言中的运算符

用运算符将运算对象(也称操作数) 连接起来的、符合c语法规则的式子,称为c表达式

3.1 运算符的分类

按运算符的操作数的个数来分的: 单目、双目、三目

按运算符的功能分类:算数、关系、逻辑、位等

3.2 算数运算符

大部分都属于双目运算符,++、--是单目

+加法,-减法,*乘法,/除,%取余,++自增,--自减

3.3 关系运算符

比较两个操作数的关系,结果是布尔值(真(非0)1,假0)

>,<,>=,<=,==,!=

关系表达式一般用于判断或流程控制的条件中。

3.4 逻辑运算符

操作数是布尔值类型或关系表达式,逻辑表达式的结果还是布尔值。

&& 逻辑与,两个操作数都为真时,则为真;
|| 逻辑或,两个操作数都为假时,则为假;
! 逻辑非,单目运算符,非真既假,非假既真。

逻辑短路:

1)逻辑与:左边为假,则右边不执行

2)逻辑或:左边为真,则右边不执行

3.5 位运算

将操作数转换成二进制,按从低到高对齐,进行位与、位或、位异取反的操作,或者进行左移右移操作。

& 位与,对齐的两位都为1时则为1。
| 位或,对齐的两位只要存在一个1,则为1。
^ 异或,对齐的两位相同为0,不同为1
~ 位取反,0取反1,1取反0
>> 右移,<< 左移, [扩展] >>> 无符号右移
data>>n  向右移n位,相当于操作数data除2的n次幂
          1)逻辑右移,高位补0,低位溢出
          2)算术右移,高位补符号,低位溢出
          逻辑还是算术取决于编译器
data<<n   向左移动n位,相当于操作数data乘以2的n次幂
          低位补0

3.6 其他运算符

3.6.1 三目运算符

条件表达式?为真的表达式:为假的表达式

3.6.2 逗号运算符

a,b,c,d返回最后一个表达式的结果

3.6.3 复合运算符

一般与=赋值运算组合使用

+=、-=、*=、/=、%=、>>=、<<=、&=、|=、^=

3.6.4 运算符的优先级

63d9f2d3572c11df57c9a205612762d0f703c2f8

4. 流程控制语句

代码程序执行流程:自上而下,一条一条语句执行

实际业务中存在一定的分支(逻辑条件),当满足条件时,则进入相应的语句,反之,执行其他的语句块

4.1 if分支语句

单分支语法

if(条件表达式){
    语句块;
}

条件表达式:关系表达式、逻辑表达式、代表布尔值的0(假)或1(真)

当表达式的布尔值的结果为真时,则执行语句块;反之,不执行语句块,如果语句块只有一行时,可以将()省略。

双分支语法

if(条件表达式){
    语句块1;
}else{
    语句块2;
}

如果条件表达式的结果为真时,则执行语句块1,反之执行语句块2。

多分支语法

if(条件表达式1){
    语句块1;
}else if(条件表达式2){
    语句块2;
}else if(条件表达式3){
    语句块3;
}....
    else{
        以上条件都不成立时,执行的语句块;
    }

嵌套分支语法

if(条件表达式){
    if(条件表达式2){}
    if(条件表达式3){}else{}
    if(条件表达式4){}else if(条件表达式5){}else{}
}

4.2 switch分支

switch(表达式){
    default;
        其它语句;
        [break;]
    case值1:
        语句块1;
        [break;]
    case值2:
        语句块2;
        [break;]
    .....
    case 值n:
        语句块n;
        [break;]
}

switch中的表达式的结果:char,short,int,long

【注意】default的位置可以放置在任意位置,无论哪一个分支(case或default)在执行语句后,没有break的帮助下,则会向下穿透,只有break时或执行到},才会结束。

4.3 for循环语句

语法

for(A;B;C){
    D
}

A:初始化语句,初始化语句可以定义一个或多个变量并初始化值【只会执行一次】

B:for循环的条件,如果条件为真,则执行D语句块,如果条件为假,则结束for循环。【可能会执行多次】

C:步进表达式,一般针对初始化中的变量,修改它的值,使得B条件表达式可能为假,当D语句执行结束之后,再执行C,C执行完成后,立即跳到B。

for循环的执行流程

1.A
2.B
3.D
4.C
5.B(条件为真,D:条件为假,结束)

4.4 while循环

语法

while(条件表达式){
    语句块;
}

4.5 do-while循环

先执行循环体的语句,再进行条件判断

do{
    语句块
}while(条件表达式)

4.6 中断或结束循环

break:停止(结束)循环

continue:结束本次循环,跳到下一次循环(条件表达式)

4.7 goto语句

goto关键字的作用,程序可以直接跳转到指定的位置,从而实现流程分支或循环

语法:

goto 标签名;

标签名通过如下格式声明:

标签名:
      代码块;
      .....

goto跳转的标签名,可以在goto之前声明,也可以在它的语句之后声明

注:图片来自百度百科:https://baike.baidu.com/item/运算符优先级/4752611

标签:语句,break,语言,笔记,运算符,条件,表达式,字节
From: https://www.cnblogs.com/dijun666/p/17626331.html

相关文章

  • Extended Kalman Filter vs. Error State Kalman Filter for Aircraft Attitude Estim
    EKF与ESKF的对比“Engineerscansolveexactproblemsusingnumericalapproximations,ortheycansolveapproximateproblemsexactly"-FredDaum.对出现在实际问题中的非线性的运动学(dynamic)模型以及/或非线性的观测方程进行线性化的操作,然后基于这个线性化的方程计算......
  • [算法考研笔记]mm算法随笔[成绩划分][回溯0-1][得分][字段和][聪明小偷][股票买卖]
    mm算法随笔学习笔记(回溯算法)回溯<---->递归1.递归的下面就是回溯的过程回溯法是一个纯暴力的搜索、有的时候暴力求解都没有办法,用回溯可以解决。回溯法解决的问题:组合问题如:1234两两组合切割问题如:一个字符串有多少个切割方式,或者切割出来是回文子集问题:1......
  • Linux下C语言调用libcurl库获取天气预报信息
    一、概述当前文章介绍如何在Linux(Ubuntu)下使用C语言调用libcurl库获取天气预报的方法。通过HTTPGET请求访问百度天气API,并解析返回的JSON数据,可以获取指定城市未来7天的天气预报信息。二、设计思路【1】使用libcurl库进行HTTPGET请求在代码中包含<curl/curl.h>头文件,以便使用libc......
  • Go语言gorm框架MySQL实践
    gorm是一个使用Go语言编写的ORM框架。文档齐全,对开发者友好,支持主流数据库。我最近在补齐Go语言各类基础的框架和操作库的知识,终于进展到了数据库阶段,搜资料的时候基本都是推荐这个框架,可见其之流行程度。在不断尝试练习之后,总结了一些经验和使用方式,供初学者参考。在之前使用Jav......
  • Java学习笔记(九)
    6.4根父类1、如何理解根父类是object这句话?(1)所有类都直接或间接的继承Object(字面解释)(2)Object类型的变量,可以接收任意类型的对象(3)Object类型的数组,可以任意类型的元素(4)规定Object[]类型的数组,可以接收任意的对象数组(5)规定Object[]类型的数组,不可以接收元素是基本数据类型的一维......
  • 拓端tecdat|R语言实现k-means聚类优化的分层抽样(Stratified Sampling)分析各市镇的人
    最近我们被客户要求撰写关于k-means聚类的研究报告,包括一些图形和统计输出。简介假设我们需要设计一个抽样调查,有一个完整的框架,包含目标人群的信息(识别信息和辅助信息)。如果我们的样本设计是分层的,我们需要选择如何在总体中形成分层,以便从现有的辅助信息中获得最大的优势。换句话......
  • 学习笔记-流畅的Python 1st
    P31和*都遵循不修改原有的操作对象,而是创建一个新的序列>>>a=[1,2,3]>>>c=a*2>>>a[0]=3>>>c[1,2,3,1,2,3]如果在a*n这个语句中,序列a里的元素是对其他可变对象的引用的话,你就需要格外注意了,因为这个式子的结果可能会出乎意料。比如,你想用my......
  • d、SQL语言
    SQL语言SQL全称是结构化查询语言,英文译作StructuredQueryLanguage,它是一种在关系型数据库中定义和操纵数据的标准语言。最早是由IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEMR开发的一种查询语言,当时称为SEQUEL2,也就是目前的SQL语言。1979年Oracle公司首先提供了商用......
  • 读发布!设计与部署稳定的分布式系统(第2版)笔记30_为部署而设计
    1. 部署行为是系统生命的重要组成部分1.1. 只编写代码是不够的,只要没有在生产环境中运行,一切都不算完成1.2. 要想取得成功,需要早早地频繁部署软件1.3. 设计易于部署的软件非常有必要1.4. 零停机部署就是目标2. 机器与服务2.1. 机器是可配置的操作系统实例2.1.1. ......
  • 学习go语言编程之函数
    函数定义函数的基本组成:关键字func,函数名,参数列表,返回值,函数体,返回语句。示例如下:funcAdd(aint,bint)(retint,errerror){ ifa<0||b<0{ err=errors.New("shouldbenon-negativenumbers") return } returna+b,nil//支持多重返回值}如果参......