鱼C论坛

 找回密码
 立即注册
查看: 900|回复: 4

[已解决]小白求助

[复制链接]
发表于 2020-3-29 20:16:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.
以下不能正确进行字符串初始化的语句是:

A.
char str[8] = "good!";

B.
char str[] = "good!";

C.
char str[8] = {'g', 'o', 'o', 'd', '!'};

D.
char str[] = {'g', 'o', 'o', 'd', '!'};

2.

下面的代码段执行后,输出的结果是:
int i=0;
if ( i==0 ) {
    int i=3;
}
printf("%d\n", i);


请问:
第一题我编译都通过了呀,没有发现哪个选项初始化有问题。。。
第二题if ( i==0 ) {int i=3;}和if ( i==0 ) { i=3;}的输出结果为什么会不同呀?求解释一下。
最佳答案
2020-3-29 20:24:45
本帖最后由 qiuyouzhi 于 2020-3-29 20:31 编辑

应该是D。因为D没有结束符'\0'。
你打印它,再打印另一个字符串
应该会有乱码的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-29 20:24:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 qiuyouzhi 于 2020-3-29 20:31 编辑

应该是D。因为D没有结束符'\0'。
你打印它,再打印另一个字符串
应该会有乱码的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-29 20:25:30 | 显示全部楼层
1 现在的c挺智能了,都能正确初始化,但A中后几个字符是乱码
2 大括号里面声明的int生命周期只在大括号里面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-31 11:17:33 | 显示全部楼层
BngThea 发表于 2020-3-29 20:25
1 现在的c挺智能了,都能正确初始化,但A中后几个字符是乱码
2 大括号里面声明的int生命周期只在大括号里 ...

如果A后几个字符是乱码的话,是不是也可以推论C也同理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 11:24:51 | 显示全部楼层
补充一下三楼老哥的第二点声明;
你的if语句中int i = 3;相当于重新定义了一个同样名字的i变量并且赋值为3,但是作用域仅仅是在if函数的大括号以内,出了if函数,i还是 i= 0 的那个初始的i;如果你if函数中没有定义新的变量i,而是直接用赋值语句 i= 3 的话,相当于引用了外部变量i, 并且改变了他的初始值为3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 05:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表