当前位置:网站首页>[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 .
边栏推荐
- 软件测试外包到底要不要去?三年真实外包感受告诉你
- Refer to how customer push e-commerce does content operation
- leetcode35. 搜索插入位置(简单,找插入位置,不同写法)
- 接口自动化测试实践指导(上):接口自动化需要做哪些准备工作
- How to reconstruct the class explosion caused by m*n strategies?
- LeetCode - 152 乘积最大子数组
- Practical guidance for interface automation testing (Part I): what preparations should be made for interface automation
- 成功解决AttributeError: Can only use .cat accessor with a ‘category‘ dtype
- Facebook AI & Oxford proposed a video transformer with "track attention" to perform SOTA in video action recognition tasks
- Basic commands of MySQL
猜你喜欢
WPF之MVVM
Apache dolphin scheduler source code analysis (super detailed)
Hydra common commands
Misc of BUU (update from time to time)
UWA pipeline version 2.2.1 update instructions
Huawei equipment configuration ospf-bgp linkage
Facebook AI & Oxford proposed a video transformer with "track attention" to perform SOTA in video action recognition tasks
leetcode35. 搜索插入位置(简单,找插入位置,不同写法)
leetcode6109. 知道秘密的人数(中等,周赛)
指尖上的 NFT|在 G2 上评价 Ambire,有机会获得限量版收藏品
随机推荐
顶测分享:想转行,这些问题一定要考虑清楚!
基于购买行为数据对超市顾客进行市场细分(RFM模型)
【Hot100】739. 每日温度
ROS2安装及基础知识介绍
UWA Pipeline 2.2.1 版本更新说明
Attributeerror successfully resolved: can only use cat accessor with a ‘category‘ dtype
Day 248/300 关于毕业生如何找工作的思考
UNIPRO Gantt chart "first experience": multi scene exploration behind attention to details
Monotonic stack
RichView TRVStyle 模板样式的设置与使用
Supporting title of the book from 0 to 1: ctfer's growth road (Zhou Geng)
Refer to how customer push e-commerce does content operation
简单描述 MySQL 中,索引,主键,唯一索引,联合索引 的区别,对数据库的性能有什么影响(从读写两方面)
Explain in detail the functions and underlying implementation logic of the groups sets statement in SQL
Windows Server 2016 standard installing Oracle
UDP攻击是什么意思?UDP攻击防范措施
机器学习植物叶片识别
雲上有AI,讓地球科學研究更省力
Huawei equipment configuration ospf-bgp linkage
基于PyTorch和Fast RCNN快速实现目标识别