C语言每日好题
文章平均质量分 55
C语言学习过程遇到的一些还可以的题目
Starry_hello world
喧闹任其喧闹,自有我自为之,我自风情万种,与世无争
展开
-
C语言每日好题(1)
但是有一个严重的风险就是,我们知道每个数据类型的大小是有范围的,比如int能表示的值是-2147483648到2147483647但是可能a+b或者a-b的值不在范围内,从而导致交换失败。-3补码 1111 1111 1111 1111 1111 1111 1111 1101。0的补码 0000 0000 0000 0000 0000 0000 0000 0000。(把第一个式子代入得,b=a^b^b=b^b^a=0^a=a)(把第二个式子带入得,a=a^b=a^b^a=a^a^b=b。原创 2024-07-17 21:02:20 · 318 阅读 · 0 评论 -
C语言每日好题(2)
这样显然是危险的,因此,C++在这个地方进行了改良,你会发现那个char*p=arr;问题就出在了char*只能访问一个字节空间,所以打印值的范围也在一个字节大小范围之内(-128~127),要记住指针类型一定要和数组类型一致,数组是int[]类型的,那么指针最好是int*类型的,不然容易出错。但是这个数组类型是int类型,也就是每个数组元素的大小是四个字节范围之内,这串代码遍历打印数组的结果是没有问题的,那么问题出在哪里了呢?当数组元素大小超过一个字节时,char*类型的指针打印就会出错。原创 2024-07-23 23:49:03 · 249 阅读 · 0 评论 -
C语言每日好题(3)
这个地方我们错的原因可能觉得strlen("abc")的结果是3,strlen("abcdef")的结果是6,3-6当然小于0;首先 strlen("abc")的结果是3,strlen("abcdef")的结果是6这一步是对的。当然如果大家想通过printf去打印strlen("abc")-strlen("abcdef")但是别忘了strlen的返回值是size_t,3和6都是size_t类型的。,因此相减也是size_t类型的,size_t是无符号类型。就不能用%d,得用%zu。原创 2024-08-18 19:13:26 · 324 阅读 · 2 评论