探索C语言鲜为人知的奇妙冷知识

前言

  • 当你以为对 C 语言已经足够了解时,准备好迎接一场颠覆你认知的奇妙之旅吧!在编程的广袤世界中,C 语言犹如一座古老而神秘的城堡,其中隐藏着无数不为人知的冷知识角落。今天,让我们一同踏入这个充满惊喜与新奇的领域,去探索那些被时间和常规所掩盖的 C 语言冷知识宝藏。

一、数组下标

  • C语言中访问数组元素一般都写成: arrayName[index] ,但其实也可以写成: index[arrayName]
#include<stdio.h>
int main()
{
	int arr1[5] = { 1,2,3,4,5 };
	printf("%d\n", arr1[1]);
	printf("%d\n", 1[arr1]);
	return 0;
}
  • 运行结果:

在这里插入图片描述

二、符号替换

  • 早期 IBM 键盘没有中括号和花括号按键,所以在 C 语言中可以使用其它的组合符号来替代,并且一直保留到现在。可以使用 <::> 来代替 ( 和 ) ,使用 <%%> 来替换 { 和 } 。

三、sizeof 是运算符

  • sizeof 是 C 语言的一种单目运算符,用于计算操作数的存储大小。它可以用于计算变量、数据类型或表达式的大小。

四、字符常量的类型

  • 在 C 语言中,字符常量的类型是 int 。而在 C++中,字符常量的类型是 char

五、三目运算符的结果

  • 在 C 语言中,三目运算符 ?: 的结果一定是右值。而在 C++中,如果 : 旁边的两个操作数是左值,那么结果也是左值。

六、趋近运算符

  • C语言有一种“趋近运算符”,写作 –> 或者 <– ,可以让一个变量的值逐渐趋近于某个数字。但这只是一种假象, <– 可以拆分成两个运算符,分别是小于运算符 < 和自减运算符 ,而 的优先级大于 < ,所以先执行 ,再执行 <

七、字符串拼接

  • 将两个由 " " 包围的字符串放在一起,它们会自动拼接成一个字符串。由 “” 包围的字符串默认是不能换行的,如果文本内容比较长,可以使用 \ 来换行。 \ 必须放在当前行的末尾。
int main() {
    printf("This is a "
        "long string");  // 这里两个字符串自动拼接
    printf("\nThis is a long\n"
        "string using \\"); // 这里通过 \ 实现换行拼接
    return 0;
}

八、long 不一定比 int 长

  • C语言有三种基本的整数类型,分别是 shortintlong ,很多初学者认为,后者的长度大于前者的长度,这个其实是不对的。C语言并没有严格规定 shortintlong 的长度,只做了宽泛的限制。
  • short 至少占用2个字节;
  • int 建议为一个机器字长,32位环境下机器字长为4字节,64位环境下机器字长为8字节;
  • short 的长度不能大于 intlong 的长度不能小于 int

九、1Byte 不一定等于 8Bit

  • 人们通常认为 1Byte 等于 8Bit,就好像公理一样,但其实 C 语言标准并没有这样说。C 语言标准只是规定一个 Byte 必须能够以正数的方式容纳整个 ASCII 编码表,但是具体实现还要依赖编译器。

总结

  • 至此,我们的 C 语言冷知识探索之旅暂时告一段落,但这仅仅是冰山一角。C 语言的深邃与奇妙远不止于此,还有更多的冷知识等待着我们去发现。希望这次的探索能让你对 C 语言有了新的认识和感悟,也期待你在今后的编程之路上能带着这份好奇与热情,不断解锁更多的精彩。让我们保持探索的精神,在 C 语言的世界里继续前行,去遇见更多的不可思议!
  • 你还有知道哪些冷知识呢,欢迎在评论区一起分享。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值