news 2026/1/22 2:01:29

续操作符详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
续操作符详解

int main()
{
int a = 0;
//~ 是按二进制位取反
//00000000000000000000000000000000 - 补码
//00000000000000000000000000000000 - 补码
//11111111111111111111111111111111 -> ~a
//11111111111111111111111111111110
//10000000000000000000000000000001
//-1
printf("%d\n", ~a);//-1

return 0;
}
运行结果为-1

int main()
{
int a = 3;
//int b = ++a;//前置++, 先++, 后使用
//a=a+1,b=a;
int b = a++;//后置++, 先使用, 再++
//b=a, a=a+1
printf("%d\n", a);//
printf("%d\n", b);//
return 0;
}
运行结果为4
3

int a = 10;
printf("%d\n", a--);//?
printf("%d\n", a);//?
return 0;
}
运行结果为10
9

int main()
{
int a = 10;
int* p = &a;
*p = 20;
printf("%d\n", a);
return 0;
}
运行结果为20


int main()
{
int a = 0;
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof a);//ok

//printf("%d\n", sizeof int);//err
return 0;
}
//sizeof是操作符, 不是函数
//strlen是库函数, 是用来求字符串长度

6.关系操作符
>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”


int main()
{
if (3 == 5)
{
}
//err
if ("abc" == "abcdef")//这样写是在比较2个字符串的首字符的地址
{
}
//两个字符串比较相等应该使用strcmp
return 0;
}

7.逻辑操作符
&& 逻辑与
|| 逻辑或

区分逻辑与和按位与
区分逻辑或和按位或

1&2----->0
1&&2----->1
1|2----->3
1||2----->1


int main()
{
int a = 3;
int b = 5;
int c = a && b;
printf("%d\n", c);
//if (a && b)
//{

//}
return 0;
}

例题://1. 能被4整除,并且不能被100整除
//2. 能被400整除是闰年
int is_leap_year(int y)
{
if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
{
return 1;
}
else
{
return 0;
}
}

int main()
{
return 0;
}


#include <stdio.h>
int main()
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++ && ++b && d++;

//i = a++||++b||d++;
printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);
return 0;
}
a = 1
b = 2
c = 3
d = 4


8.条件操作符(三目操作符)
表达式1?表达式2:表达式3
真 ✓ ×
假 × ✓

int main()
{
int a = 3;
int b = 0;

int max = (a > b ? a : b);

if (a > 5)
b = 3;
else
b = -3;

(a > 5) ? (b = 3) : (b = -3);

b = (a > 5 ? 3 : -3);

return 0;
}
9. 逗号表达式
exp1, exp2, exp3, ...expN

逗号表达式,就是用逗号隔开的多个表达式
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果
int main()
{
int a = 1;
int b = 2;
int c = (a > b, a = b + 10, a, b = a + 1);
printf("c=%d\n", c);
return 0;
}
运行结果为c=13
10.下标引用、函数调用和结构成员
(1) [] 下标引用操作符
操作数: 一个数组名 + 一个索引值

(2)( ) 函数调用操作符
接受一个或者多个操作数: 第一个操作数是函数名, 剩余的操作数就是传递给函数的参数。

(3)访问一个结构的成员
. 结构体.成员名
-> 结构体指针->成员名

// 下标引用相关代码
int main()
{
int arr[10] = { 0 };
// arr[7] --> *(arr+7) --> *(7+arr) --> 7[arr]
// arr是数组首元素的地址
// arr+7就是跳过7个元素, 指向了第8个元素
// *(arr+7) 就是第8个元素
//
arr[7] = 8;
7[arr] = 9;

//[] arr 7
//3 + 5;
//5 + 3;
return 0;
}

// 函数调用相关代码
//函数定义
int Add(int x, int y)
{
return x + y;
}

int main()
{
int a = 10;
int b = 20;
//函数调用
int c = Add(a, b);//() 就是函数调用操作符,操作数: Add,a,b
//
//sizeof a;
return 0;
}


// 结构成员相关代码
include <string.h>
struct Stu
{
char name[20];
int age;
double score;
};

void set_stu(struct Stu* ps)
{
strcpy((*ps).name, "zhangsan");
(*ps).age = 20;
(*ps).score = 100.0;
}

void print_stu(struct Stu ss)
{
printf("%s %d %lf\n", ss.name, ss.age, ss.score);
}

int main()
{
struct Stu s = {0};
set_stu(&s);
print_stu(s);
return 0;
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/14 6:58:41

cmake_第二章 CMake基础语法_set(),缓存变量set(CACHE)

文章目录第二章 CMake基础语法2.4 cmake定义普通变量set()2.4.1 set() 语法格式2.4.2 变量类型和作用域详解2.4.3 CMake运行脚本 .cmake 文件2.4.4 编译 .cmake脚本-- cmake -P选项2.4.5 使用-D选项定义变量2.4.6 普通变量总结2.5 CMake定义缓存变量set(CACHE)2.5.1 缓存变量语…

作者头像 李华
网站建设 2026/1/14 6:58:38

python-flask-django基于BS架构的小区物业管理系统设计与实现_rsr3ei73

文章目录系统截图项目技术简介可行性分析主要运用技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统截图 python-flask-djangoBS_rsrei73 架构的小区物业管理系统设计与实现基于 项目技术简介 Python…

作者头像 李华
网站建设 2026/1/14 6:58:35

视觉SLAM十四讲解读-(v2.p85)李代数求导(扰动模型-左乘)

视觉SLAM十四讲解读-(v2.p85)李代数求导(扰动模型-左乘)1. 问题背景和目标 这里采用扰动模型&#xff08;左乘&#xff09;来求导。对旋转矩阵 RRR 进行一次左扰动 ΔR\Delta RΔR&#xff0c;设左扰动 ΔR\Delta RΔR 对应的李代数为 φ\varphiφ&#xff0c;目标是计算 ∂(Rp…

作者头像 李华
网站建设 2026/1/14 6:58:33

免费彻底解决找不到d3dx10_39.dll文件 无法运行软件游戏问题

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/1/14 6:58:32

【显示】SDR和HDR区别

SDR和HDR区别1 SDR VS HDR2 色域差异2.1 Rec. 7092.2 Rec. 2020参考资料1 SDR VS HDR SDR&#xff08;标准动态范围&#xff09;是传统的显示标准&#xff0c;常见于普通电视、显示器、视频。它能显示的亮度范围有限&#xff0c;一般最大亮度在 100 ~ 300 nits 左右&#xff0…

作者头像 李华
网站建设 2026/1/14 6:58:30

手机端AIDE编译器安卓版3×3数字拼图游戏代码

java代码 package com.szpt.app; /*手机编程王APP & AIDE编译器联合出品官方微信2133688724微信公众号&#xff1a;手机编程APP官网&#xff1a;www.shoujibiancheng.com */import android.os.Bundle; import android.view.View; import android.widget.Button; import and…

作者头像 李华