c

标识符取名规则:
1、由数字、字母、下划线组成。
2、不能以数字开头。
3、不能与关键字重名(C语言中有32个关键字)。
4、见名知义,类型、功能、使用范围、归属模块。

在C语言中使用占位符来表示变量的类型:
%hhd %hd %d %ld %lld 有符号整型的占位符
%hhu %hu %u %lu %llu 无符号整型的占位符
%f %lf %Lf 浮点型的占位符
%c 字符型的占位符
布尔类型是用来逻辑运算的,不参与输入、输出,如果要强行输出,把它当整型即可。

运算符:
算术运算符:+ - * / %
整数/整数 结果没有小数点,例如:5/3 结果是1。
/和% 都是进行除法运算,/结果是商,%结果是余数(取模),它们除数不以为零,否则会出现浮点数例外的错误,该错误会让程序立即结束。
浮点型的数据不能使用 % 运算符。

关系运算符:> >= < <= == !=
    它们运算结果是逻辑值,C语言中的逻辑值是用0(假)和1(真)模拟的,计算出的结果还能进行数学运算。
    与数学中的用法不同,10 < x < 100,在数学中表示是x的取值范围,但在C语言中它就是需要运算的表达式,会先计算 10 < x 得到0|1,然后再把这个结果与100比较,所以该表达的结果永远是真。

    使用==运算符时,非常容易出错误,容易漏写一个=,该错误编译器检查不出,阅读代码也很难查出来,所以在使用==时,把常量放在左边,变量写右边,这样当漏写=时,编译器会报错误。
        100 = num;
        num = 100;

逻辑运算符:&& || !
    它们会把运算对象转换成逻辑值再运算,零值转换为假,非零值转换为真,它们的运算结果也就是逻辑值。
    A && B 一假即假
    A || B 一真即真
    !A 求反,单目运算符,比&&、||的运算级别高。

    && ||短路特性:当左边的值已经可以确定运算结果时,右边的不再计算,适当的使用可以实现精简的if结构。
        (表达式1) && (表达式2)
        (表达式1) || (表达式2)
        num >10 && (num=0); // 等价于下面的if语句
        if(num > 10)
        {
            num = 0;
        }

自变运算符:++/--
    该运算符可以让变量的值自加或自减1。
    前自变:++/--i
        变量的值立即加1或减1。
    后自变:i++/--
        变量的值加1或减1,下一行代码有效。
    注意:不要在复杂表达式中过度使用自变运算符,不同的编译器对它的运算规则不同,编译器会把合适的后自变优化成前自变。

赋值运算符:= += *= /= ...
    a += b; <=> a = a + b;

三目运算符:[A]?[B]:[C];
    它的运算对象有三个,所以叫三目运算符,先把[A]转换成逻辑值,为真执行[B],为假执行[C],相当于精简的 if else 结构。
    注意:与 if else 不同的是三目运算符必须有运算结果,所以它里面不能使用流程控制语句,比如:return、break、continue。

字节运算符:
    它不是函数,是C语言的32个关键字之一,如果运算对象不是表达式,它可以不使用小括号。
    注意:sizeof不会执行表达式,它只时推算表达式的执行结果是什么类型,然后计算出该类型在内存中占用多少个字节。

类型转换:
前提:只有相同类型的数据才能在一起进行运算,因为不同类型的数据,字节数不同、格式、运算规则不同,必须把不同类型的数据转换成同一类型才能运算。
自动类型转换(隐式类型转换):
不同类型的数据组成的表达式,编译器会把先它们转换成相同的类型再计算,这叫作自动类型类型或隐式类型转换,它们的转换规则是以不丢失数据为前提:
1、字节数不同,字节少的向多的转换。
2、整型向浮点型转换。
3、有符号的向无符号转换。
4、char、short会先转换成int类型,如果不能满足运算条件再转换成其它。
强制类型转换:
(目标类型)数据,会把数据强制转换为目标类型,这种转换方式有可能会造成数据丢失,慎重使用。

使用if语句要注意的问题:
1、if的小括号后面一旦有分号,那么下面的代码就与它没有关系。
2、如果它的分支只有一行代码,从语法角度来说,大括号可以省略,但会影响代码的安全性、健壮性、可扩展性,所以商业项目中不要省略if语句的大括号。

开关语句:
switch (数据) // 小括号中必须是整型数据
{
case v1: 语句1; // case后面必须是整型常量(字面值常量、宏常量、枚举常量),如果小括号中的数据与小case后的数据相等,则打开执行开关,如果不关闭开关,接下来case后的语句都可以执行。
case v2: 语句2; break; // break语句可以关闭执行开关,如果每个case后都break语句,就形成了多分支结构
case v3: 语句3;
default: // 如果所有的case都没有匹配成功,则打开执行开关,就相当于多分支if语句最后的else,可以有也可以没有
}

循环语句:
do while 先执行循环体,后判断循环条件,循环体至少执行一次,相同条件下do while会比for和while多执行一次循环体。
for、while 先判断循环条件,再执行循环体,循环体可能一次都不执行。
for 适合解决循环次数确定的问题,可以使用循环变量清楚表示循环的次数。
while 适合解决只知道循环条件但不知道具体循环次数的问题(开始条件、结束条件)。
do while 适合解决 先处理 后检查的问题。
for、while 的小括号后面不能跟分号,否则下面的代码就不属于它们的循环体。
do while 的小括号后面必须有分号,它的这个特点适合定义宏函数。

跳转语句:
break 语句有两种用法:
用法1:在 switch 语句中可以关闭执行开关。
用法2:在循环语句中,它可以跳出一层循环,也是结束死循环的一种方式,一般用它来提前结束循环,提高程序的执行效率。

continue 语句只能在循环语句中使用,停止执行循环体,直接进行下一次循环,一般用于改善大括号的嵌套层数。

goto 语句可以跳转到函数内的任意位置(在函数内通过定义标签确定代码的位置),由于它过度灵活、自由可能会破坏已经设计好的分支、循环语句,因此一般公司都禁止使用(通过预处理指令把goto关键字定义为病毒,一旦在代码中使用编译器就会报错),新的编程语句中已经取消该关键字。

goto非常适合在驱动程序中处理异常、释放资源,所以C语言中从语法设计上就非常适合控制硬件。
    
return 语句可以跳出函数,并附加一个数据给函数的调用者。

什么是数组:
数组就是变量的组合,是一种批量定义变量的方式。

数组的定义与初始化:
数组元素的默认值与普通变量一样,是随机的。
类型 数组名[长度] = {v1,v2,v3,...};

1、如果初始化数据不够,编译器会自动补0。
    int arr[5] = {};
2、如果初始化数据过多,编译器会提示警告并丢弃多余数据。
    int arr[5] = {1,2,3,4,5,6,7};
3、对数组进行初始化时,数组的长度可以省略,编译器会自动统计数据的数量设置给数组。
    int arr[] = {1,3,1,2,1,3,2,5,3,5,2,3,6,3};
    size_t len = sizeof(arr)/sizeof(arr[0]);
    for(int i=0; i<len; i++)
    {
        printf("%d ",arr[i]);
    }
4、初始化语法只能在定义数组时使用,这也是唯一一次能对数组批量访问的机会,数组定义完成后就只能单个访问。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容