当前位置:网站首页>[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、loopAfter 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、aA 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+1The 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
ifConditional expressions in statements , There are many ways to express , There are different ways , But use the same . example :i!=0It can be directly written as ai, It can also have the same effect , And more concise. . because C Specified in the language , In numerical terms0Express " false ", The rest are expressed as “ really ”. But notice 0 Different representations of , character'\0'、NULLAll represent values 0, But the character zero'0', It does not mean numerical value0, stay ASCII In code , Characters zero with numeric value48Express . - 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
elseOnly with the front lately Unmatched Ofifpairing , one-on-one . Pay attention to three points :1、 stayelseBefore ;2、 leaveelselately ;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");
}
expressIt should be an integer expression ,caseSelected value , Can only be constant , Be careful : Characters are also plastic , AndcaseThe values of are mutually exclusive .- When the first one case After the value of successfully matches the expression , To perform its
caseThe 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 ,
breakIt saves ,caseThere can be no statement after , Sentences can be saved ,defaultThe position of the statement is arbitrary . however , IfdefaultPrior to case The value of matches , Will continue to execute backwardsdefaultWhat's in the sentence ,defaultThe statement of no longer has no value matching , Just executed . - For all
caseThe statement in , There are two situations that will be implemented :1、caseThe value of matches the expression ;2、 At presentcasePreviouscaseThe value of the statement matches the expression , In the statement before execution NonebreakJump 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
breakJump out ofswitch; - Such as
switchstay Loop statement in , stayswitchMediumbreakOnly rightswitchtake effect , Can't jump out of the loop .
for Cycle default
- C In language , Altogether 3 A loop statement , among
whileAnddo……whileMust contain an expression , andforEmpty 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 .
边栏推荐
- ROS2安装及基础知识介绍
- [daily question] 729 My schedule I
- 18. Multi level page table and fast table
- Latex文字加颜色的三种办法
- Every API has its foundation when a building rises from the ground
- 万丈高楼平地起,每个API皆根基
- Day 248/300 关于毕业生如何找工作的思考
- 19. Actual memory management of segment page combination
- L'Ia dans les nuages rend la recherche géoscientifique plus facile
- Fast target recognition based on pytorch and fast RCNN
猜你喜欢

攻防世界 MISC中reverseMe简述

机器学习植物叶片识别

Introduction to ros2 installation and basic knowledge

Development of entity developer database application

Attributeerror: can 't get attribute' sppf 'on < module' models. Common 'from' / home / yolov5 / Models / comm

AttributeError: Can‘t get attribute ‘SPPF‘ on <module ‘models.common‘ from ‘/home/yolov5/models/comm

How to find a medical software testing institution? First flight software evaluation is an expert
![[English] Grammar remodeling: the core framework of English Learning -- English rabbit learning notes (1)](/img/02/41dcdcc6e8f12d76b9c1ef838af97d.png)
[English] Grammar remodeling: the core framework of English Learning -- English rabbit learning notes (1)

ROS learning_ Basics

Huawei equipment configuration ospf-bgp linkage
随机推荐
19.段页结合的实际内存管理
万丈高楼平地起,每个API皆根基
Bitcoinwin (BCW): 借贷平台Celsius隐瞒亏损3.5万枚ETH 或资不抵债
leetcode6109. 知道秘密的人数(中等,周赛)
基于PyTorch和Fast RCNN快速实现目标识别
Chapter 7 - thread pool of shared model
作者已死?AI正用艺术征服人类
【每日一题】729. 我的日程安排表 I
软件测试外包到底要不要去?三年真实外包感受告诉你
19. Actual memory management of segment page combination
Zhongqing reading news
接口自动化测试框架:Pytest+Allure+Excel
Blue Bridge Cup zero Foundation National Championship - day 20
AI on the cloud makes earth science research easier
[advanced software testing step 1] basic knowledge of automated testing
Apache DolphinScheduler源码分析(超详细)
Map of mL: Based on the adult census income two classification prediction data set (whether the predicted annual income exceeds 50K), use the map value to realize the interpretable case of xgboost mod
AttributeError: Can‘t get attribute ‘SPPF‘ on <module ‘models.common‘ from ‘/home/yolov5/models/comm
[Yu Yue education] Dunhuang Literature and art reference materials of Zhejiang Normal University
leetcode1020. 飞地的数量(中等)