问答详情
源自:4-2 定制自己的容器:结构体和共用体

输出结果第二个数报错

为什么输出的是90,25775849394

而不是90,98呀?


#include<stdio.h>


struct Student

{

    int math;

    int English;

};


int main()

{

    struct Student s[50];

    s[49].math=90;

    s[49].English=98;

    printf("%d,%d\n",s[49]);

    return 0;

}


提问者:啊啊阿 2022-09-10 16:12

个回答

  • weixin_慕尼黑2406156
    2023-03-11 11:36:41

    c++是没有print的!你应该是学过python的,python用的是print;而c++用的是cout。

    如果想要运行,printf("%d,%d\n",s[49]);应该改为:

    cout << s[49];或 cout << s[49] << endl; 或cout << s[49] << " ";

    第一个是语句结束没有任何其它内容,第二个是语句结束后换行,最后一个是空格

  • qq_慕丝6318267
    2022-09-18 00:11:05

    //你的输出错误了,s[49]是Student这个结构体,而不是里面数据的值
    //第一个输出结果是90,是因为取址在这个结构体的开头,也就是s[49].math这个4字节内存的地址
    //虽然这可以获取math的数值但是你应该使用s[49].math来保证代码鲁棒性更高(不容易出bug)
    //你第一个%d对应的是math的值,第二次%d却没有对应,所以第二次输出也就是垃圾数据了(毫无意义的一串数据)
    //你应该这样,前一个%d对应s[49].math,后一个对应s[49].English
    printf("%d,%d\n",s[49].math,s[49].English);