【Linux c】圆括号中的组合语句

Linux系列:圆括号()、(())、$()的区别 目录 () (()) $() () 定义数组 还可以定义子shell (()) 算数运算 $() 存储命令 阅读详情

花括号对 "{...}"用于把变量声明和语句组合成一个复合语句(组合语句)或一个语句块,这样在语义上这些语句就等同于一条语句。组合语句的有花括号后面不需要使用分号。圆括号中的组合语句,即形如"({...})" 的语句,可以在GUN C中用作一个表达式使用。这样就可以在表达式用使用loop、switch语句和局部变量,因此这种形式的语句通常称为语句表达式。语句表达式具有如下示例的形式:

({int y = foo(); int z;
  if(y > 0) z = y;
  else z = -y;
  3 + z;
})

其中组合语句中的最后一条语句必须是后面跟随一个分号的表达式。这个表达式(3 + z) 的值即用作整个圆括号括住语句的值。如果最后一条语句不是表达式,那么整个语句表达式就具有void类型,因此没有值。另外,这种表达式中语句声明的任何局部变量都会在整块语句结束后失效。这个示例语句可以像如下形式的赋值语句来使用:

res = x + ({...}) + b;

当然,人们通常不会像上面那样写语句,这种语句表达式通常都用来定义宏。例如内核源代码init/main.c程序中读取CMOS时钟信息的宏定义:

#define CMOS_READ(addr) ({\
  outb_p(0x80 | addr, 0x70;\
  inb_p(0x71);\
  })

再看一个include/asm/io.h头文件中的读I/O端口port的宏定义,其中最后变量_v 的值就是inb() 的返回值。

#define inb(port) ({\
unsigned char _v;\
__asm__ volatile ("inb %%dx, %%al":"=a" (_v):"d" (port));\
_v;\
})
Mac电脑用Latex论文排版3天速成5天实战de笔记 我后悔了,这五天竞赛搞得我视力都下降了...一个冲动的决定后成为数模竞赛论文写手,3天速成+5天时间=点亮攻克latex写论文技能💡关于Overleaf我是Mac,曾经按照大部分推荐的方式用TEXshop+vs code,但是把模板导入就开始报错。跟着少之又少的适配mac的教程(此时我已知道大概是走错路了)改了配置也无效。海鲜市场找佬改了半天,佬问我:一定要用VC吗?我说,那倒也不是。于是佬推荐我overleaf,三下五除二帮我挑配了环境,美汁汁收了我30块钱。 阅读详情

相关推荐

ThinkPHP 8.1 + think-swoole 4.1 实战:5分钟搞定WebSocket聊天室(附完整代码)

本文详细介绍了如何使用ThinkPHP 8.1和think-swoole 4.1快速构建高并发WebSocket聊天室。通过5分钟实战教程,开发者可以轻松实现用户列表、消息广播等核心功能,支持2000+并发连接,适用于客服系统、在线协作等实时通信场景。

ol789012345的博客 126

Linux中的括号用法

一、Linux中的小括号(也叫圆括号)“( )”的用法 1.单小括号() 1)数组赋值或者初始化数组; 2)子Shell赋值:小括号中的内容会开启一个子shell独立运行;括号中以分号连接,最后一个命令不需要;各命令和括号无需空格;3)实现多条命令集合:新开多条命令来执行,各个命令之间用分号隔开,最后一个命令必须要分号来隔开;4)与”$“结合实现命令替换:等同于cmd 扫描一遍命令行,发现了$(c...

weixin_34396902的博客 1752

用C#语言实现记事本

本次程序设计作业为用C#语言设计一个记事本,设计的记事本应与电脑系统自带的记事本类似,最后实现的界面及功能应类似于下图。

qq_57738695的博客 2847

linux中()、[]、{}、(())、[[]]等各种括号的使用

linux中()、[]、{}、(())、[[]]等各种括号的使用 1、小括号、圆括号() 1.1 单小括号() 命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的 变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最 后一个命令可以没有分号,各命令和括 号之间不必有空格。 命令替换。等同于 cmd ,shell扫描一遍命令行,发现了(cmd)结构,便将(cmd)结构,...

zjmy的博客 3万+

【本体】Protege高效批量导入实例(Individuals)的自动化实践

本文详细介绍了在Protege中高效批量导入实例(Individuals)的自动化实践方法。通过分析Protege本体文件结构,提供Python脚本示例,帮助用户快速处理大规模数据导入,显著提升知识图谱构建效率。特别适合需要处理数千个实例的医疗、制药等领域应用。

weixin_30275415的博客 408

Mac新手必看:为什么你的终端找不到Python命令?5分钟搞定zsh报错

本文针对Mac用户在终端遇到“zsh: command not found: python”报错的问题,提供了深度解析与实战修复指南。文章解释了macOS系统因历史原因默认使用`python3`而非`python`命令,并详细介绍了四种解决方案:养成使用`python3`的习惯、创建别名、通过Homebrew安装链接以及修改PATH环境变量,帮助新手快速解决zsh报错,顺利开始Python开发。

weixin_29248653的博客 594

编写一个程序,查找C语言中的基本语法错误,如圆括号、方括号、花括号不配对等,正确处理引号与注释

#include int brace, brack, paren; void in_quote(int c); void in_comment(void); void search(int c); main() {     int c;     extern int brace, brack, paren;   //声明全局变量     while((c = ge

lhm的博客 4435

RHCA II之路---EX442-10

这题比较耗时,可以多开2个窗口让他跑起来后先做后面的题目。

Q先生 589

C语言的小括号和花括号结合使用&&复合语句

先上代码,对于基于f-statck协议栈改进项目时候,看到一段代码,内核里面的很多宏也经常使用这种复合型语句,看了相关的资料和博客,写下来自己的理解: static int (*real_clock_gettime) (clockid_t , struct timespec *); #define SYSCALL(func) ...

喝醉的鱼博客 8012

2023年美高赛HiMCM:A题蒲公英 思路

蒲公英,通常称为蒲公英,是一种原产于欧亚大陆的植物,现在在世界各地都可以找到[1]。这种植物很容易通过其亮黄色的花朵(图1)和独特的“马勃”种子头(图2)来识别。该头部的每颗种子都附着在一个类似降落伞的结构上,称为“冠毛”,有利于风的传播[2]。如果处于“马勃”阶段的单个蒲公英毗邻一块开阔的一公顷土地,请创建一个数学模型来预测蒲公英在 1、2、3、6 和 12个月内的传播情况。确保您的模型考虑了各种气候条件(例如温带、干旱和热带气候)对蒲公英生长的影响。2. 蒲 公英、人类和其他植物之间的关系很复杂。

斌擎科技 7403

浏览器缓存导致代码不更新?一招解决部署后用户仍看到旧页面的问题

方案效果适用场景文件名哈希永久解决前端工程化项目HTTP缓存头控制精准控制需服务器权限Meta标签部分生效临时补救方案最佳实践:入口HTML禁用缓存,静态资源使用哈希文件名 + 长期缓存,达到「秒级更新」+「高性能」的平衡!

江拥羡橙的博客 810

C语言入门总结——Linux C编程一站式学习

C的语法规则。 1.源文件中所有函数定义之外可以出现哪些语法元素? 全局变量、函数原型声明、宏定义、typedef和结构体、联合体定义、注释… 2.函数定义之中可以出现哪些语法元素? 局部变量定义,语句块,注释… 3.语句有哪几种? 表达式语句、函数调用语句、控制语句、复合语句、空语句。 4.哪些语法元素需要遵循标识符的命名规则? 标识符的命名规则即:必须用字母/下划线开头;只有下划线、字母、数字...

amara 2189

三步实现Java分布式追踪:像“开灯”一样简单

摘要: 本文通过三步实现Java分布式追踪: 引入依赖:配置Spring Cloud Sleuth+Zipkin,自动埋点无需代码侵入; 启动服务:REST接口自动生成Trace/Span ID,日志可验证; 可视化分析:通过Zipkin UI查看调用链耗时和拓扑关系。 亮点:AOP自动埋点、零业务代码修改、支持多服务链路追踪,助力快速定位性能瓶颈。适用于微服务诊断,生产环境可调整采样率平衡性能。(150字)

墨夶的博客 2711

Linux技巧篇之一

这个系列的博客是为了总结所学以及方便日后查询

啊哈、的专栏 456

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Linux内核完全注释 阅读笔记:3.3、C语言程序

By: Ailson Jack Date: 2018.09.14 个人博客:  http://www.only2fire.com/        本文在我博客的地址是:http://www.only2fire.com/archives/79.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。 本小节给出内核中经常用到的一些gcc扩充语句的说明。 1、C程序编译和链接...

Ailson Jack的专栏 433

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Linux内核开发自学笔记1

gcc编译知识: form Linux内核完全注释修改v3.0 使用gcc编译c语言程序经历四个阶段: 一、预处理:gcc把c程序传递给cpp,对指示符和宏进行替换处理,输出纯C语言代码。 二、编译:纯.c代码被编译器生成对应的与机器相关的汇编代码.s。 三、汇编:汇编器把汇编代码转换成机器指令,保存在目标文件.o中。 四、链接:最后GNU链接器把所有目标文件链接在一起,生成可执行映像文件。 g...

我的征途是星辰大海 1076

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

unix/linux shell,Unix/Linux Shell编程(4)

命令执行操作符◆多条命令可以在一行中出现。它们可以从左到右顺序执行。此时,各条命令之间应以分号( ;)隔开,如:pwd ; who | wc -l ; cd /usr/bin◆在相邻命令间可存在逻辑关系,即逻辑“与”和逻辑“或”。逻辑与操作符“&&”可把两个命令联系在一起,其一般形式:命令1 && 命令2其功能是先执行命令1,如果执行成功,才执行命令2;否...

weixin_39575758的博客 307

linux-4

shell 大括号、圆括号的使用2010-08-09 11:20在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: PHP 代码:1.${var} <br />2.$(cmd) <br />3.()和{} <br />4.${var:-string},${var:+string},${var:=string},${var:?string} <br />5.$((exp)) <br />6.$(var%pattern),$(var%%pattern),$(var#patt

wuguangxue255的专栏 451

linux-3

shell 大括号、圆括号的使用2010-08-09 11:20在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: PHP 代码:1.${var} <br />2.$(cmd) <br />3.()和{} <br />4.${var:-string},${var:+string},${var:=string},${var:?string} <br />5.$((exp)) <br />6.$(var%pattern),$(var%%pattern),$(var#patt

wuguangxue255的专栏 403

linux编译两个整数相加,Linux C基础02——进制转换和c语言简单介绍

一,进制转换其他进制转换到二进制:10->2:除二取余 逆取法!小数部分乘积(2)取整,顺写法!16->2: 一位转四位 0x放在首位,表示16进制,0x2F;8->2: 一位变三位! 0放在首位,表示16进制 ,03;二进制转换到其他进制:2->8:三位合一法,从右到左,高位 不够三位则补零!2->16:类上;2->10:位权展开求和法;八进制,十六进制转化为...

weixin_32968105的博客 411

C语言笔记(1)

C语言笔记(1) 关键词: c语言编程的7个步骤; 可移植性语言; 解释型与编译型; 编码器与链接器,目标代码,启动代码,库代码; getchar()作用; Linux与Windows系统; 典型c程序格式; int main(void)+return,void的含义; scanf("%f", &weight)中&的含义; 位,字节,字。 1.c语言编程的步骤 2.c语...

weixin_44502896的博客 399

Linux C基础02——进制转换和c语言简单介绍

一,进制转换 其他进制转换到二进制: 10->2:除二取余 逆取法!小数部分乘积(2)取整,顺写法! 16->2: 一位转四位 0x放在首位,表示16进制,0x2F; 8->2: 一位变三位! 0放在首位,表示16进制 ,03; 二进制转换到其他进制: 2->8:三位合一法,从右到左,高位 不够三位则补零! 2->16:类上; 2->...

Leo's blog 818

linux计算器命令退出,linux 命令行中的计算器

原标题:linux 命令行中的计算器假如你在一个图形桌面环境中需要一个计算器时,你可能只需要一路进行点击便可以找到一个计算器。例如,Fedora 工作站中就已经包含了一个名为 Calculator 的工具。它有着几种不同的操作模式,例如,你可以进行复杂的数学运算或者金融运算。但是,你知道吗,命令行也提供了一个与之相似的名为 bc 的工具?bc 工具可以为你提供的功能可以满足你对科学计算器、金融计算...

weixin_32394247的博客 581

linux0.12-8-3-traps.c

学习记录,打卡。卷起来。(-:

fitpolo 225
上一篇: 二层交换机工作原理
下一篇: 【Linux c】寄存器变量
ckangle
博客等级 码龄14年 48粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值