C莫名其妙题目

有时候会遇到一些莫名其妙的题目,输出一些莫名其妙的结果,但是其中都有有道理的,需要好好理解。

#include<stdio.h>
int main()
{
    int  a='abc';
    printf("%s\n",&a);
    //printf(&a);

}

在window XP系统,C-Free中执行

编译时有两个警告,最后输出结果是cba。

解释:

int a='abc';
编译器会将'abc'扩展为int,它的值为
6382179 即0x00616263
而intel int内存的实际存储格式是低位在前,所以实际a指向的内容为
0x63626100
如果按字串输出,正好是
cba
且正好是以\0结尾
C99标准中有说到:

ISO/IEC 9899:1999 (E)
§6.4.4.4
Semantics
10 An integer character constant has type int. The value of an integer character constant containing a single character that maps to a single-byte execution character is the numerical value of the representation of the mapped character interpreted as an integer.
The value of an integer character constant containing more than one character (e.g.,'ab'), or containing a character or escape sequence that does not map to a single-byte execution character, is implementation-defined. If an integer character constant contains a single character or escape sequence, its value is the one that results when an object with type char whose value is that of the single character or escape sequence is converted to type int

还有c++中多字节字符常量( multicharacter literal),其值都是实现来定义的


修改下:
#include<stdio.h>
int main()
{
    int  a='abcde';
    printf("%s\n",&a);
    //printf(&a);

}

结果输出为edcb?“

a被丢弃了,因为超出了int的范围,int只会保持最后的四个数值,前面的都会丢弃掉,因此可以正常输出edcb,然后继续输出知道找到结束符停止。


C盘100GB莫名其妙满了可能是由于以下几个原因造成的: 1. 临时文件和缓存文件的积累:我们在使用电脑的过程中,很多软件会在C盘上生成临时文件和缓存文件,这些文件会逐渐积累并占据硬盘空间。我们可以通过清理系统临时文件和应用程序缓存来释放一部分空间。 2. 安装程序和更新文件占用大量空间:有时候我们在安装程序或者更新系统时,会将文件默认保存在C盘上,特别是某些特大型的软件或者游戏更新文件可能会占用大量空间。我们可以将安装和更新的目标路径更改到其他磁盘,以减少C盘的负担。 3. 系统日志文件太多:操作系统会生成日志文件,以记录重要的操作信息,但是这些日志文件可能会占用大量空间。我们可以使用系统自带的磁盘清理工具或者手动删除这些日志文件。 4. 回收站中的文件未清空:删除文件后,它们首先被放入回收站中。如果长时间不清空回收站,回收站中的文件可能会占用大量空间。我们可以打开回收站,选择清空回收站来释放空间。 5. 病毒或恶意软件感染:有时候,电脑可能被病毒或恶意软件感染,它们会在后台生成大量文件并占用硬盘空间。我们可以使用杀毒软件进行全面扫描和清除。 总之,当C盘莫名其妙地满了,我们可以通过清理临时文件、缓存文件、安装文件、更新文件、系统日志文件、清空回收站或杀毒来释放空间。如果以上解决方法无效,可能需要考虑升级硬盘或调整文件存储策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值