V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
NoBlinking
V2EX  ›  编程

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

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