在赋值语句 a[10]=b[10]+2 中,如果 b[10]没有值会怎么样?
在判断语句 c[10]==-48 中如果 c[10]没有值会返回 1 还是 0 ?
谢谢!
1
mengyaoss77 2018-05-20 10:04:40 +08:00 via Android
只要不是内存访问越界,取决于编译器,b 数组会有随机赋的初值或者是 0
如果有错误还请楼下指正 |
2
mengyaoss77 2018-05-20 10:05:59 +08:00 via Android
这种问题自己敲两行代码试试就知道了,我现在没用电脑没法试。。
|
3
moonmagian 2018-05-20 10:13:14 +08:00 via Android
如果你说的没有值是指越界的话,他的值完全取决于编译器的处理方式...
|
4
NoBlinking OP @moonmagian 没有值指的是没赋初值,也没输入值
|
5
NoBlinking OP 我试了一下,貌似我的编译器总会给他赋一个初值,要么 0,要么随机,但在不改程序的前提下,每个变量在每一次的执行里初值都是不变的。
|
6
steveway 2018-05-20 10:38:24 +08:00 via Android
取决于编译器 有时候总是 0 有时候莫名其妙数字 这些问题总是很玄学的
|
7
pkookp8 2018-05-20 11:08:15 +08:00 via Android
局部变量初值多少是一个未定义的行为,没必要纠结
全局变量和静态变量,没记错是 0,但即使我没记错也不建议这么写。memset 和加一个={0}也不麻烦,还能少很多需要纠结的问题不是? |
8
zzj0311 2018-05-20 15:31:05 +08:00 via Android
ub 一概回答不知道
|
9
qiuyi116 2018-05-20 16:08:20 +08:00 via iPhone
未定义 具体情况未知 跟编译器实现有关
|
10
BugRepairMan 2018-05-20 16:41:00 +08:00
undefined behaviour
|
11
0x11901 2018-06-26 22:39:34 +08:00
取决于你的数据类型和指针地址。
|
12
gaokevin163 2019-08-14 17:47:20 +08:00
首先你不应该问它没有值怎么办,应该是问首先他存不存在,存在才能讨论有没有值的问题。
|