输出结果第二个数报错

来源:4-2 定制自己的容器:结构体和共用体

啊啊阿

2022-09-10 16:12

为什么输出的是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;

}


写回答 关注

2回答

  • 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_幕布斯...

    c++也是可以用printf的

    2023-12-07 18:15:54

    共 1 条回复 >

  • 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);


趣味 C++ 入门

C++ 入门,开启趣味学习之旅,揭开 C++ 的神秘面纱,让你不再望而生畏。

30498 学习 · 184 问题

查看课程

相似问题