C/C++学习(3)

#好好学习,天天向上#

右移运算符 >>

右移运算符>>将运算数的每一位,由左向右移动指定的位数,尾部无法容纳的值将丢弃,头部空出来的位置使用0填充。

  1. 10001010 >> 2 // 返回 00100010

上面示例中,10001010的每一个二进制位,都向右移动两位结果为100010。因为最低的两位10被丢弃,头部多出来的两位要补0,所以最后得到00100010

右移运算符相当于将运算数除以2的指定次方,比如右移2位就相当于除以4(2的2次方)。

int32

Int 32意思是32位整数(32bitinteger),相当于int占4个字节-2147483648~2147483647. 在这个范围内,int 32可以表示所有的整数。

int32 num=15;

num=num>>2; //结果是3

while语句

用于循环结构,满足条件时,不断执行循环体。

  1. while (expression)
  2. statement

如果表达式expression为非零值(表示真),就会执行statement语句,然后再次判断expression是否为零;如果expression为零(表示伪)就跳出循环,不再执行循环体。

sum +=

赋值运算的简写形式

如果变量对自身的值进行算术运算,C 语言提供了简写形式,允许将赋值运算符和算术运算符结合成一个运算符。下面是一些例子。

  1. i += 3; // 等同于 i = i + 3
  2. i -= 8; // 等同于 i = i - 8
  3. i *= 9; // 等同于 i = i * 9
  4. i /= 2; // 等同于 i = i / 2
  5. i %= 5; // 等同于 i = i % 5

逻辑或运算符 ||

C语言中其名称为逻辑"或",与其并列的逻辑运算符还有:逻辑"与"运算符(&&)、逻辑"非"运算符(!)。

1.逻辑或运算符。形式:(布尔值)||(布尔值)

例子:x=6,y=3

条件:(x==6 || y==3)

returns true;

两个布尔值中任何一个值为TRUE(或者两个都为TRUE),则返回值为TRUE。如果两个运算符都是FALSE,则返回值为FALSE。

#ifdef

在‌C语言中,#ifdef是一个条件编译指令,用于判断一个宏是否已经被定义。其基本语法格式如下:

#ifdef 宏名 // 如果宏被定义,则执行此处代码

#else // 如果宏未定义,则执行此处代码

#endif

c语言 出现的*#if* 0 是预编译指令,表示之后的代码不执行。

struct 结构体赋值

cs 复制代码
// 写法一
struct fish shark = {"shark", 9, {"Selachimorpha", 500}};
             //嵌套结构体,struct 结构的成员可以是另一个 struct 结构

// 写法二
struct species myBreed = {"Selachimorpha", 500};//对结构体属性按顺序直接赋值,
struct fish shark = {"shark", 9, myBreed}; //嵌套结构体

// 写法三
struct fish shark = {
.name="shark",    //引用属性名字进行赋值
.age=9,
.breed={"Selachimorpha", 500}
};

// 写法四
struct fish shark = {
.name="shark",
.age=9,
.breed.name="Selachimorpha",
.breed.kinds=500
};

printf("Shark's species is %s", shark.breed.name);

const unsigned char reg{}

char是C/C++整型数据中比较古怪的一个,在标准中是unsigned。其它的如int/long/short等不指定signed/unsigned时都默认是signed。

在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此**char能表示-128~127,unsigned char没有符号位,因此能表示0~255,**这个好理解,8个bit,最多256种情况,因此无论如何都能表示256个数字。

const unsigned char reg{} 由于"const"关键字的存在,这个值是不能更改的,只能读取。

这个数据类型常用于进行寄存器表的配置。

相关推荐
wen__xvn4 分钟前
每日一题洛谷P8664 [蓝桥杯 2018 省 A] 付账问题c++
c++·职场和发展·蓝桥杯
WhyNot?13 分钟前
深度学习入门(三):神经网络的学习
深度学习·神经网络·学习
Moonnnn.21 分钟前
运算放大器(五)电压比较器
笔记·学习·硬件工程
熬夜苦读学习25 分钟前
Linux进程信号
linux·c++·算法
榆榆欸40 分钟前
14.主从Reactor+线程池模式,Connection对象引用计数的深入分析
linux·服务器·网络·c++·tcp/ip
编程侦探1 小时前
【设计模式】原型模式:用“克隆”术让对象创建更灵活
c++·设计模式·原型模式
KangkangLoveNLP1 小时前
手动实现一个迷你Llama:使用SentencePiece实现自己的tokenizer
人工智能·深度学习·学习·算法·transformer·llama
Once_day2 小时前
Linux错误(6)X64向量指令访问地址未对齐引起SIGSEGV
linux·c++·sse·x64·sigsegv·xmm0
浪淘沙jkp2 小时前
大模型学习二:DeepSeek R1+蒸馏模型组本地部署与调用
学习·deepseek
JhonKI2 小时前
【从零实现Json-Rpc框架】- 项目实现 - 客户端注册主题整合 及 rpc流程示意
c++·qt·网络协议·rpc·json