当前位置:网站首页>[some special grammars about C]
[some special grammars about C]
2022-07-06 06:57:00 【A thousand years in a dream】
List of articles
About C Some special grammars of
Sentence block
- All statements written in a brace , It is called a statement block . Usually used in
if
、loop
After the statement , When there is only one statement after , It saves . - special , It can be written almost anywhere , But the scope of action is limited , It only takes effect in the statement block :
int a = 1;
{
int a = 2;
printf("%d\n", a);
}
printf("%d\n", a);
Such as removing braces , Will compile errors .
int a = 1;
int a = 2;
printf("%d\n", a);
printf("%d\n", a);
printf And Ternary expression In combination with
For some usual needs , Want to judge according to different results , Output different data , So you may have the following code :
if(i>0)
printf("%d Greater than 0",i);
else
printf("%d Less than or equal to 0",i);
For just one function , It's too cumbersome , actual printf The following syntax is supported , Using ternary expressions , The code can be much simpler .
printf("%d", 1 > 0 ? 1 : 0);
printf(1 < 0 ? "%d" : "%c", 65);
printf Execution order of
int a = 1;
printf("%d,%d,%d\n", a, a + 1, a++);
- If you press from left to right , The output should be :
1,2,1
- But the actual output :
2,3,1
int a = 1;
printf("%d,%d,%d\n", a = a + 1, a + 1, a);
- It comes from right to left output , Guess that the output is :
2,2,1
- But the reality is :
2,2,2
- reason : For variables a , It should be after all expressions are executed , Print together come out . Instead of printing one by one .
- So for
a=a+1
、a
A similar expression , Will be printed with the same value , Its value is after executing all expressions from right to left , Variable a Value . - And for something like
a+1
The expression of , Variables are not printed a Value , It is not assigned to a Variable , It can only be printed as a constant .
printf The return value of
Take a chestnut :
printf("%d-%d-%d-%d-%d", printf("1"),printf("22"),printf("333"),printf("4444"),printf("55555"));
- Output results :
5555544443332211-2-3-4-5
- According to the output , Also proved that printf The function is executed from right to left , First output
555554444333221
, Output again printf The return value of , Namely1-2-3-4-5
, according to printf Parameters in function , It's easy to find rules and find printf The return value of : The number of printed characters .
if Condition judgment in
- about
if
Conditional expressions in statements , There are many ways to express , There are different ways , But use the same . example :i!=0
It can be directly written as ai
, It can also have the same effect , And more concise. . because C Specified in the language , In numerical terms0
Express " false ", The rest are expressed as “ really ”. But notice 0 Different representations of , character'\0'
、NULL
All represent values 0, But the character zero'0'
, It does not mean numerical value0
, stay ASCII In code , Characters zero with numeric value48
Express . - So the following expressions are not executed
if(0)
printf("0");
if('\0')
printf("\'\\0\'");
if(NULL)
printf("NULL");
if And else The problem of pairing
else
Only with the front lately Unmatched Ofif
pairing , one-on-one . Pay attention to three points :1、 stayelse
Before ;2、 leaveelse
lately ;3、 Unpairedif
.- It has nothing to do with indentation !!! This is not Python.
switch Medium break
- Basic grammar : General form
switch(express) {
case 1:
printf("1");
break;
case 2:
printf("2");
break;
case 3:
printf("3");
break;
default
printf("default");
}
express
It should be an integer expression ,case
Selected value , Can only be constant , Be careful : Characters are also plastic , Andcase
The values of are mutually exclusive .- When the first one case After the value of successfully matches the expression , To perform its
case
The following sentence , Again by break Jump out of , Do not execute the following statement .
switch (express){
case 1:
case 2:
printf("2");
default:
printf("default");
case 3:
printf("3");
break;
}
- More special ,
break
It saves ,case
There can be no statement after , Sentences can be saved ,default
The position of the statement is arbitrary . however , Ifdefault
Prior to case The value of matches , Will continue to execute backwardsdefault
What's in the sentence ,default
The statement of no longer has no value matching , Just executed . - For all
case
The statement in , There are two situations that will be implemented :1、case
The value of matches the expression ;2、 At presentcase
Previouscase
The value of the statement matches the expression , In the statement before execution Nonebreak
Jump out ofswitch
; - about default There are also two situations in which statements will be executed :1、 be-all case Do not match the value of the expression ;2、 Previous case The value of the statement matches the expression , In the statement before execution None
break
Jump out ofswitch
; - Such as
switch
stay Loop statement in , stayswitch
Mediumbreak
Only rightswitch
take effect , Can't jump out of the loop .
for Cycle default
- C In language , Altogether 3 A loop statement , among
while
Anddo……while
Must contain an expression , andfor
Empty can be saved in the loop . however for Semicolons in a loop cannot be omitted ! - Infinite loop writing :
for(;;)
printf("for If the expression in is not written, it defaults to ' really '");
- In almost all cases , The three loops can be used interchangeably . According to the actual needs, generally choose a more concise one .
define Macro definition
- define Just a simple character replacement , Pay special attention to the difference between brackets .
- Can be nested , With parameters , It can be a statement .
边栏推荐
- UWA pipeline version 2.2.1 update instructions
- AttributeError: Can‘t get attribute ‘SPPF‘ on <module ‘models.common‘ from ‘/home/yolov5/models/comm
- BUU的MISC(不定时更新)
- RichView TRVStyle 模板样式的设置与使用
- [Yu Yue education] Dunhuang Literature and art reference materials of Zhejiang Normal University
- [hot100] 739. Température quotidienne
- 中青看点阅读新闻
- 一文读懂简单查询代价估算
- 前缀和数组系列
- SAP SD发货流程中托盘的管理
猜你喜欢
ML之shap:基于adult人口普查收入二分类预测数据集(预测年收入是否超过50k)利用Shap值对XGBoost模型实现可解释性案例之详细攻略
漏了监控:Zabbix对Eureka instance状态监控
Apache dolphin scheduler source code analysis (super detailed)
指尖上的 NFT|在 G2 上评价 Ambire,有机会获得限量版收藏品
Pallet management in SAP SD delivery process
26岁从财务转行软件测试,4年沉淀我已经是25k的测开工程师...
UWA pipeline version 2.2.1 update instructions
Facebook AI & Oxford proposed a video transformer with "track attention" to perform SOTA in video action recognition tasks
因高额网络费用,Arbitrum 奥德赛活动暂停,Nitro 发行迫在眉睫
Attributeerror: can 't get attribute' sppf 'on < module' models. Common 'from' / home / yolov5 / Models / comm
随机推荐
接口自动化测试实践指导(上):接口自动化需要做哪些准备工作
【Hot100】739. 每日温度
接口自动化测试框架:Pytest+Allure+Excel
Latex文字加颜色的三种办法
AI on the cloud makes earth science research easier
19. Actual memory management of segment page combination
A brief introduction of reverseme in misc in the world of attack and defense
AttributeError: Can‘t get attribute ‘SPPF‘ on <module ‘models. common‘ from ‘/home/yolov5/models/comm
机器学习植物叶片识别
LeetCode Algorithm 2181. 合并零之间的节点
leetcode35. 搜索插入位置(简单,找插入位置,不同写法)
Pallet management in SAP SD delivery process
SAP SD发货流程中托盘的管理
Development of entity developer database application
What is the difference between int (1) and int (10)? Senior developers can't tell!
Number of query fields
Bitcoinwin (BCW): 借贷平台Celsius隐瞒亏损3.5万枚ETH 或资不抵债
Call, apply, bind rewrite, easy to understand with comments
Redis Foundation
UniPro甘特图“初体验”:关注细节背后的多场景探索