前言
当你以为对 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语言有三种基本的整数类型,分别是 short 、 int 、 long ,很多初学者认为,后者的长度大于前者的长度,这个其实是不对的。C语言并没有严格规定 short 、 int 、 long 的长度,只做了宽泛的限制。 short 至少占用2个字节;int 建议为一个机器字长,32位环境下机器字长为4字节,64位环境下机器字长为8字节;short 的长度不能大于 int , long 的长度不能小于 int 。
九、1Byte 不一定等于 8Bit
人们通常认为 1Byte 等于 8Bit ,就好像公理一样,但其实 C 语言标准并没有这样说。C 语言标准只是规定一个 Byte 必须能够以正数的方式容纳整个 ASCII 编码表,但是具体实现还要依赖编译器。
总结
至此,我们的 C 语言冷知识探索之旅暂时告一段落,但这仅仅是冰山一角。C 语言的深邃与奇妙远不止于此,还有更多的冷知识等待着我们去发现。希望这次的探索能让你对 C 语言有了新的认识和感悟,也期待你在今后的编程之路上能带着这份好奇与热情,不断解锁更多的精彩。让我们保持探索的精神,在 C 语言的世界里继续前行,去遇见更多的不可思议! 你还有知道哪些冷知识呢,欢迎在评论区一起分享。