广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言各种符号的使用介绍上篇
  • 582
分享到

C语言各种符号的使用介绍上篇

C语言符号C语言符号的使用 2022-11-13 14:11:56 582人浏览 薄情痞子
摘要

目录1、注释符号1.1 注释的基本注意事项1.2 如何写出好的注释2、接续符和转移符2.1 续行功能2.2 转义字符3、单引号和双引号3.1 基本概念3.2 特殊情况4、逻辑操作符4

1、注释符号

1.1 注释的基本注意事项

为了更好的演示我们下面的代码会在 linux 平台下演示( \ 为续行符):

这段代码,哪一行是有问题的呢?

这里可能有小伙伴就有疑问了,为什么只有这一行出了问题呢?我们知道注释在预处理阶段就被编译器识别出来了,这里我们可以用 Linux 的一个指令:GCc -E test.c -o test.i这样就是对test.c 程序进行翻译,最终把预处理的结果保留下来,接着就可以用 vim 打开我们的预处理结果文件了。

最终我们可以得出这样一个结论:注释被替换本质上是被替换成空格!

这里我们要再提一个简单的点,C语言注释无法被嵌套, 匹配,感兴趣的小伙伴可以去测试下:

int main()
{
    
    */
    return 0;
}

这里还有一个有趣的代码,如果用C语言的注释的话,如果只出现了一个 的话,那么他就会默认下面所有代码都被注释!

int main()
{
    int x = 10;
    int y = 5;
    int ret = 0;
    int* p = &y;
    ret = y/*p;
    return 0;
}

那么如何解决上面这种情况呢?

在 / 与 * 中加上空格: ret = y / *p;

把 *p 用括号括起来: ret = y / (*p);

推荐第二种,因为看起来会更直观

1.2 如何写出好的注释

[ 建议1 ] 注释应该准确易懂,不能有争议性,错误的注释反而有害。

[ 建议2 ] 要保证注释与代码的一致性,没用的注释及时删除。

[ 建议3 ] 对于全局数据 (全局变量、常量定义)必须要加注释。

[ 建议4 ] 一目了然的语句可以不加注释,比如:i++; // i 自增1。

[ 建议5 ] 注释的位置应与被描述的代码相邻,可以与语句同一行,不放在下方。

[ 建议6 ] 当代码比较长,特别是有多重其那套时,应当在一些段落的结束处加注释。

[ 建议7 ] 注释的缩进要与代码的缩进一致。

[ 建议8 ] 注释代码应当注重,“ 为何做 ” ,而不是 “ 怎么做 ”。

[ 建议9 ] 数值的单位一定要给上注释。

[ 建议10 ] 复杂的函数中,在分支语句、循环语句结束之后需要适当的注释,方便区分各个分支或循环体。

2、接续符和转移符

2.1 续行功能

C语言里用反斜杠( \ )表示断航。编译器会将反斜杠剔除掉,跟在反斜杠后面的字符自动续接到前一行。但是注意:反斜杠之后不能有空格,感兴趣的小伙伴可以下来测试下:

int main()
{
    int a = 1;
    int b = 2;
    int c = 3;
    if (1 == a && \
        2 == b && \
        3 == c)
    {
        printf("You can see me!\n");
    }
    else
    {
        printf("You can not see me!\n");
    }
    return 0;
}

可能有的小伙伴会好奇,明明我不用 \ 也可以换行不会报错啊,那为什么还要用 \ 表示换行呢?我们作为一个程序员,别人可能也会去阅读我们的代码,如果不带 \ 直接换行可能会出现奇异,在一个也可以告诉编译器这个地方是续行,语义更强!

2.2 转义字符

C语言中,有一些字符,就是他的字面意思,比如 'n','b','t'。 也有一些字符,本身就是特殊含义的,比如:" , ', \ 转义的本质含义是:字面转特殊,或者特殊转字面。

\ 有两种用途:

  1. 当续行符使用
  2. 转义字符使用 (a. 字面转特殊 b. 特殊转字面)

这里我们重点讲一下 \n 和 \r可能小伙伴们都听过换行和回车吧!那么他们本质上的意思是不一样的!但是现在很多编译器让换行( \n )里面也包含了回车( \r ) 的功能!那他们俩究竟有什么样的区别呢?

换行:让光标移动到下一行

回车:光标回到当前行的最开始

这里小伙伴可以试一下用C语言写一个简单的倒计时功能,就能很明显的区分换行和回车的区别了!

这里我们也可以来看一道笔试题:

//以下程序输出什么?
#include <string.h>
#include <stdio.h>
int main()
{
    printf("%d\n", strlen("abcdef"));
    // \62被解析成一个转义字符
    printf("%d\n", strlen("c:\test\628\test.c"));
    return 0;
}

这里第一个打印函数,我们如果有了解,strlen() 函数是求字符串中 \0 之前的字符个数,所以第一个打印的是 6 , 第二个打印函数,首先是 \t 被解析成一个转义字符, \62 也被解析成一个转义字符 (8进制) 所以第二个打印的应该是 14 !

3、单引号和双引号

3.1 基本概念

对于C语言有了解的小伙伴都知道,单引号引起来的都是字符常量,双引号引起来的都是字符串常量,但其实对于初学者来说还是容易出错,比如 'a',和 "a" 是完全不一样的概念,在字符串中,以 \0 为结尾,他本质上不属于字符串的元素内容,只能说他是字符串结束标识符,但是它会占用空间!也就是 'a' 会占一个字节而 "a",则会占两个字节。

有了上面简单的概念我们来看一个例子:

这里可能就有小伙伴有疑问了,前两个和最后一个 printf打印结果我还能理解,可是第三个为啥是占四个字节呢?这明明不是一个字符常量吗?(c++ 中第三个大小为 1 个字节,因为这里是讲C语言所以我们不讨论其他语言)

其实在 C99 标准的规定,'1' 叫做整型字符常量(integer character constant),被看成是 int 类型。

光是用 “ 标准规定 ” 用来证明是不可行的,我们再用一个实例来证明:

看到这个结果不要惊讶,我刚刚说过,标准规定,整型字符常量被看成是 int 类型,所以他会有四个字节的空间,而且我当前电脑是小端存储,所以低字节序放在低地址处,在者,将一个4字节的数据放入 char 类型的变量中是会发生数据截断的,会将低地址的一个字节内容放入 char 类型的变量中,所以其实最终 c 变量里放的只是一个 'd' 字符!

但是我不推荐上面这种写法!!!我们明白其中道理就好。

那这里有的小伙伴又开始下去实验了,于是写出了这样的代码:

因为一个整型字符常量只有 4 个字节空间,他如何能放得下 5个字节甚至更多呢?

3.2 特殊情况

显而易见,是不能出现空整型字符常量的,但是可以出现空字符串,因为字符串结束标识符 \0 虽然不能算字符串元素内容,但是它也是占大小的。

4、逻辑操作符

4.1 && (逻辑与)

概念:级联两个(多个)逻辑表达式,必须同时为真,结果才为真。

例子:

对于逻辑与的短路现象,因为我们编译器是从左往右扫描的,所以如果当表达式左边为假的话,它就不会去执行逻辑与右边的表达式,这也就是我们所称的短路现象:

4.2 || (逻辑或)

概念:级联两个(多个)逻辑表达式,必须至少一个为真,结果才为真。

例子:

上面这个例子同时也包含了逻辑或的短路现象,在逻辑或中,因为编译器是从左往右扫描代码的,所以只要表达式左边为真,则不需要进行右边的判断。

4.3 逻辑与和逻辑或的笔试题

因为对于前置++和后置++我还没有讲,所以有基础的同学可以先看看,没基础的可以等我下期出了符号第二期在回来看这道题。

第一个逻辑与表达式,a 变量的初始值是 0 ,而且是后置++,先使用表达式的值,在进行自增,而逻辑与必须满足表达式两边的值都为真,但凡有一个为假都不会执行后面的表达式,所以只有 a 变量发生了变化。第二个逻辑或表达式,逻辑或只要表达式两边有一个为真即可,a++ 判断为假,会接着判断 ++b, 前置++ 是先自增在使用,所以 ++b 表达式为真,也就不会去执行后面表达式了,也就是说,只有 a和b变量的值发生了变化。

到此这篇关于C语言各种符号的使用介绍上篇的文章就介绍到这了,更多相关C语言符号内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言各种符号的使用介绍上篇

本文链接: https://www.lsjlt.com/news/172256.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言各种符号的使用介绍上篇
    目录1、注释符号1.1 注释的基本注意事项1.2 如何写出好的注释2、接续符和转移符2.1 续行功能2.2 转义字符3、单引号和双引号3.1 基本概念3.2 特殊情况4、逻辑操作符4...
    99+
    2022-11-13
    C语言符号 C语言符号的使用
  • C语言各种符号的使用介绍下篇
    目录1、按位运算符1.1 按位或( | )和按位与( & )1.2 按位异或( ^ )1.3 一个关于整型提升的问题2、移位操作符2.1 左移<< 右移>&...
    99+
    2022-11-13
    C语言符号 C语言符号的使用
  • C语言各种操作符透彻理解上篇
    前言:在我们程序编写领域,操作符给我们提供了很多的运算便利,但操作符琳琅满目,我们要怎样用好它们呢,下面就带你来熟悉熟悉这些多样的操作符。 操作符分类: 算术操作符 、移位操作符 、...
    99+
    2022-11-13
  • C语言中各种操作符的详细介绍(纯干货!)
    目录算术操作符移位操作符位操作符赋值操作符 单目操作符(类型)   强制类型转换       ...
    99+
    2022-11-12
  • C语言中操作符的介绍及用法
    这篇文章主要讲解了“C语言中操作符的介绍及用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言中操作符的介绍及用法”吧!目录操作符分类算术操作符移位操作符整数存储规则左右移位规则赋值操作...
    99+
    2023-06-20
  • C语言中static的使用介绍
    目录1.static 可以修饰局部变量2. static 可以修饰全局变量3.static 可以修饰函数总结1.static 可以修饰局部变量 首先让我看看这段代码 #inclu...
    99+
    2022-11-12
  • C语言简明介绍指针的使用
    目录1. 指针类型2. 野指针3. 指针的运算3.1 指针+-整数3.2指针-指针3.3 指针的关系运算4. 指针数组1. 指针类型 指针以字节为单位; 指针类型决定了解引用时能访问...
    99+
    2022-11-13
  • C语言中数组的介绍及使用
    这篇文章主要讲解了“C语言中数组的介绍及使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言中数组的介绍及使用”吧!目录数组一维数组初始化使用总结:内存存储二维数组创建初始化数组越界问题...
    99+
    2023-06-20
  • c语言逗号运算符的使用方法
    本文将为大家详细介绍“c语言逗号运算符的使用方法”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“c语言逗号运算符的使用方法”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧...
    99+
    2023-06-06
  • C语言详细讲解注释符号的使用
    目录一、注释规则二、注释中一个有趣的问题三、教科书型注释四、迷惑型的注释五、忽悠型注释六、搞笑型注释七、漂亮的程序注释八、小结一、注释规则 编译器在编译过程中使用空格替换整个注释字符...
    99+
    2022-11-13
  • 介绍C语言程序中的注释等辅助语句如何使用
    目录一、程序中的辅助语句(上)二、程序中的辅助语句(下)一、程序中的辅助语句(上) C语言中的注释 注释是帮助理解程序而编写的文本注释本身对程序功能无任何贡献注释分为单行注释和多行注...
    99+
    2022-11-13
  • C语言实例上手深入理解操作符的使用
    目录1.闰年练习2.绝对值练习3.字符转换练习4.四则表达式练习5.隐式类型转换1.闰年练习 编写逻辑表达式判断用户给定的年份是否是闰年,年份可以被4整除但不能被100整除;年份可以...
    99+
    2022-11-13
  • C语言简明讲解三目运算符和逗号表达式的使用
    目录一、三目运算符二、逗号表达式三、小结一、三目运算符 三目运算符( a b : c)可以作为逻辑运算的载体 规则:当 a 的值为真时,返回 b 的值;否则返回 c 的值 下面看一...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作