網(wǎng)站首頁 編程語言 正文
一、程序中的輔助語句(上)
C語言中的注釋
- 注釋是幫助理解程序而編寫的文本
- 注釋本身對(duì)程序功能無任何貢獻(xiàn)注釋分為單行注釋和多行注釋
- 注釋分為單行注釋和多行注釋
注意:單行注釋不一定被編譯器支持
注釋的語法
單行注釋
- 從 // 開始到當(dāng)前行結(jié)束的所有文本(注釋范圍只涉及一行文本)
- 單行注釋中可以重復(fù)出現(xiàn) // (無特殊含義,被看作注釋文本)
多行注釋
- 從 */ 開始到 */ 結(jié)束的所有文本(注釋范圍可以涉及多行文本)
- 多行注釋不支持嵌套(錯(cuò)誤用法:/* ... abc ... /* d */ ...*/)
示例
int main() { /* 多行注釋 定義一個(gè)變量,并且初始化 */ int i = (int) (10.3 / 3); printf("i = %d\n", i); //單行注釋 /* // 多行注釋中嵌套單行注釋,無意義 */ return 0; }
賦值語句
連續(xù)賦值
- 多個(gè)賦值操作組合在一起,如: a = b = c ...
復(fù)合賦值
- 數(shù)學(xué)運(yùn)算與賦值操作組合在一起
- 如:a += 1,a -= 2,a *= 3,a /= 4
上代碼:
#include <stdio.h> int main() { int a = 0; int b = 10; a = b = b + 1; // a=>11 b=>11 printf("a = %d, b = %d\n", a, b); a += 1; a -= 2; a *= 3; a /= 4; // a => 7 printf("a = %d\n", a); /* 復(fù)合賦值與連續(xù)賦值相結(jié)合 */ a += b -= 1; printf("a = %d, b = %d\n", a, b); return 0; }
下面為輸出結(jié)果:
三目運(yùn)算符(條件運(yùn)算符)
- 本質(zhì):if ... else ... 語句的縮寫版
- 語法:(條件) ? (為真時(shí)的語句) : (為假時(shí)的語句)
注意事項(xiàng)
- 三目運(yùn)算表達(dá)式最后產(chǎn)生的是一個(gè)值,因此整個(gè)表達(dá)式不能作為左值使用
逗號(hào)表達(dá)式
- 逗號(hào)(,)是一種特殊的運(yùn)算符
- 逗號(hào)可以將多個(gè)語句連接起來組合成一個(gè)語句
- 語法:語句1,語句2,語句3,...,語句n
下面代碼就是采用逗號(hào)表達(dá)式將多個(gè)語句連在一起:
int main() { int a = 0; int b = 1; a = 2, b = 3, printf("a + b = %d\n", a + b); return 0; }
逗號(hào)表達(dá)式補(bǔ)充說明
- 逗號(hào) (,) 優(yōu)先級(jí)最低,逗號(hào)表達(dá)式可以配合括號(hào)使用
- 逗號(hào)表達(dá)式的意義是將多個(gè)語句連接為一個(gè)語句
- 逗號(hào)表達(dá)式從左向右開始執(zhí)行語句
- 逗號(hào)表達(dá)式的值就是最右邊語句的值
下面的代碼就是綜合逗號(hào)表達(dá)式和三目運(yùn)算符:
#include <stdio.h> int main() { int a = 0; int b = 10; int c = 0; a = (b < 10) ? 1 : 2; printf("a = %d\n", a); (a < 5) ? (a = 5) : (a = 0); printf("a = %d\n", a); /* ((a == 5) ? a : b) = 10; // ERROR */ a = b = c = 0; c = (a = 2, b = 3, a + b); printf("a = %d\n", a); printf("b = %d\n", b); printf("c = %d\n", c); c -= a; // c = c - a; printf("c = %d\n", c); return 0; }
下面為輸出結(jié)果:
小結(jié)
- 注釋是幫助理解程序而編寫的文本,對(duì)程序功能無貢獻(xiàn)
- 數(shù)學(xué)運(yùn)算與賦值操作可以組合在一起使用
- 三目運(yùn)算符可以理解為 if ...else .. .的縮寫形式
- 逗號(hào)表達(dá)式的意義是將多個(gè)語句連接為一個(gè)語句
二、程序中的輔助語句(下)
自增 (++) 與自減 (--) 運(yùn)算符
前置:先自增(自減),再取值
- ++v;
- --v;
后置:先取值,再自增(自減)
- v++;
- v--;
舉一個(gè)簡(jiǎn)單的例子,
v = 1, y = ++v; 執(zhí)行完之后v = 2, y = 2;
v = 1, y = v++; 執(zhí)行完之后v = 2, y = 1;
注意事項(xiàng)
- 自增(自減)操作符的結(jié)合方向 “從右至左”
- 不要在一個(gè)表達(dá)式中混合四則運(yùn)算與自增(自減)運(yùn)算
上代碼:
#include <stdio.h> int main() { int a = 0; int c = 1; a = -c++; // c -> 2 printf("a = %d\n", a); a = +(++c); // +(++c); c -> 3 printf("a = %d\n", a); a = -c--; // c -> 2 printf("a = %d\n", a); printf("c = %d\n", c); return 0; }
下面為輸出結(jié)果:
goto - 程序世界中的“破壞者”
- goto是C語言中的一個(gè)關(guān)鍵字,用于無條件暴力跳轉(zhuǎn)
- goto的跳轉(zhuǎn)位置由標(biāo)簽指定(具體指定某行代碼)
- 標(biāo)簽就是一個(gè)C語言中的合法命名,并以冒號(hào)(∶)結(jié)束
- 語法:
goto LABEL;
如下所示:
c = 1; goto LABEL; c = 2; LABEL: printf("c = %d\n",c);
注意事項(xiàng)
- goto在程序中極具破壞性,會(huì)破壞程序結(jié)構(gòu),造成程序難以理解和維護(hù),現(xiàn)代軟件開發(fā)已禁用goto。
上代碼:
#include <stdio.h> int main() { int a = 0; int c = 1; if( a + c > 0 ) { printf("a = %d, c = %d\n", a, c); goto ELSE; } else { ELSE: printf("%d + %d = %d\n", a, c, a + c); goto FOR; } for(c=10; c>0; c--) { FOR: printf("c = %d\n", c); } return 0; }
下面為輸出結(jié)果:
可以看到 c 輸出為1,這是因?yàn)槭褂?goto 語句后,直接調(diào)到 FOR 標(biāo)簽所在的位置,導(dǎo)致了 for 循環(huán)沒有執(zhí)行。
小結(jié)
- 前置 ++ 和 -- :先自增(自減),再取值
- 后置 ++ 和 --:先取值,再自增(自減)
- goto 是C語言中的一個(gè)關(guān)鍵字,用于無條件暴力跳轉(zhuǎn)
- 現(xiàn)代軟件開發(fā)已禁用goto(弊大于利)
原文鏈接:https://blog.csdn.net/weixin_43129713/article/details/121874140
相關(guān)推薦
- 2023-01-19 使用python檢查值是否已經(jīng)存在于字典列表中_python
- 2023-12-20 Nacos2.2.3版本運(yùn)行startup.cmd出現(xiàn)閃退,無錯(cuò)誤信息解決方法
- 2022-08-26 Python實(shí)現(xiàn)雙向RNN與堆疊的雙向RNN的示例代碼_python
- 2022-11-06 SQL?Server?Reporting?Services?匿名登錄的問題及解決方案_MsSql
- 2022-04-23 Docker?Compose快速部署多容器服務(wù)實(shí)戰(zhàn)的實(shí)例詳解_docker
- 2022-06-06 在使用element-ui中的el-table組件時(shí),怎么自定義合并表頭和合并行
- 2023-01-05 淺析C++中的重載,隱藏和覆蓋_C 語言
- 2022-03-15 window.navigator.hid Cannot read properties of und
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支