NoBlinking
V2EX  ›  编程

C 语言新人遇到一点问题。

  •  
  •   NoBlinking · May 20, 2018 · 4876 views
    This topic created in 3093 days ago, the information mentioned may be changed or developed.

    在赋值语句 a[10]=b[10]+2 中,如果 b[10]没有值会怎么样?

    在判断语句 c[10]==-48 中如果 c[10]没有值会返回 1 还是 0 ?

    谢谢!

    12 replies  •  2019-08-14 17:47:20 +08:00
    mengyaoss77
    mengyaoss77
    May 20, 2018 via Android
    1
    只要不是内存访问越界,取决于编译器,b 数组会有随机赋的初值或者是 0
    如果有错误还请楼下指正
    mengyaoss77
    mengyaoss77
    May 20, 2018 via Android
    2
    这种问题自己敲两行代码试试就知道了,我现在没用电脑没法试。。
    moonmagian
    moonmagian
    May 20, 2018 via Android
    3
    如果你说的没有值是指越界的话,他的值完全取决于编译器的处理方式...
    NoBlinking
    NoBlinking
    OP
    May 20, 2018
    4
    @moonmagian 没有值指的是没赋初值,也没输入值
    NoBlinking
    NoBlinking
    OP
    May 20, 2018
    5
    我试了一下,貌似我的编译器总会给他赋一个初值,要么 0,要么随机,但在不改程序的前提下,每个变量在每一次的执行里初值都是不变的。
    steveway
    steveway
    May 20, 2018 via Android
    6
    取决于编译器 有时候总是 0 有时候莫名其妙数字 这些问题总是很玄学的
    pkookp8
    pkookp8
    May 20, 2018 via Android
    7
    局部变量初值多少是一个未定义的行为,没必要纠结
    全局变量和静态变量,没记错是 0,但即使我没记错也不建议这么写。memset 和加一个={0}也不麻烦,还能少很多需要纠结的问题不是?
    zzj0311
    zzj0311
    May 20, 2018 via Android
    8
    ub 一概回答不知道
    qiuyi116
    qiuyi116
    May 20, 2018 via iPhone
    9
    未定义 具体情况未知 跟编译器实现有关
    BugRepairMan
    BugRepairMan
    May 20, 2018
    10
    undefined behaviour
    0x11901
    0x11901
    Jun 26, 2018
    11
    取决于你的数据类型和指针地址。
    gaokevin163
    gaokevin163
    Aug 14, 2019
    12
    首先你不应该问它没有值怎么办,应该是问首先他存不存在,存在才能讨论有没有值的问题。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1696 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 04:21 · PVG 12:21 · LAX 20:21 · JFK 23:21
    ♥ Do have faith in what you're doing.