c语言数组包含反斜杠0吗,有关c语言中的反斜杠 '\'

本文探讨了一个关于C语言中的反斜杠 '' 的有趣现象。在一段示例代码中,由于注释末尾的反斜杠被编译器误认为是连接符,导致字符串长度计算出错,进而引发程序行为的不确定性。删除或修正注释中的反斜杠后,程序运行结果恢复正常,揭示了C语言中反斜杠作为转义字符和连接符的潜在问题。
摘要由CSDN通过智能技术生成

2020-02-02

关键字:反斜杠趣谈

稍微懂点编程的同学,甭管是哪种编程语言,都知道甚至是在代码中用过反斜杠。

反斜杠这东西的最为人所知的作用就是作为“转义字符”以及“连接符”来使用。

例如,常见的正则表达式用途:

grep -nr "init*\.rc"

以及在 c语言 领域常见的连接代码用途:

#define LOG(a,b) do{\printf("[LOG]%d--%d", a, b); }while(0)

但笔者偶然间发现反斜杠的一个很隐秘又有趣的地方。

先来看下面这个示例程序,我们来猜猜它的执行结果是什么:

#include

int cal_length(char *);intmain()

{int amount;char *info = "China and France should respect each other.";//TODO 要考虑到单双引号前面的转义字符\

amount =cal_length(info);

printf("The amount of the sentance:%d\n", amount);return 0;

}int cal_length(char *sen)

{int len = 0;while(*(sen + len) != ‘\0‘)

{

len++;

}returnlen;

}

正确答案是:不确定!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值