小白求助
1.以下不能正确进行字符串初始化的语句是:
A.
char str = "good!";
B.
char str[] = "good!";
C.
char str = {'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;}的输出结果为什么会不同呀?求解释一下。 本帖最后由 qiuyouzhi 于 2020-3-29 20:31 编辑
应该是D。因为D没有结束符'\0'。
你打印它,再打印另一个字符串
应该会有乱码的 1 现在的c挺智能了,都能正确初始化,但A中后几个字符是乱码
2 大括号里面声明的int生命周期只在大括号里面 BngThea 发表于 2020-3-29 20:25
1 现在的c挺智能了,都能正确初始化,但A中后几个字符是乱码
2 大括号里面声明的int生命周期只在大括号里 ...
如果A后几个字符是乱码的话,是不是也可以推论C也同理{:5_96:} 补充一下三楼老哥的第二点声明;
你的if语句中int i = 3;相当于重新定义了一个同样名字的i变量并且赋值为3,但是作用域仅仅是在if函数的大括号以内,出了if函数,i还是 i= 0 的那个初始的i;如果你if函数中没有定义新的变量i,而是直接用赋值语句 i= 3 的话,相当于引用了外部变量i, 并且改变了他的初始值为3
页:
[1]