论坛: 编程破解 标题: 又一个C++的问题 复制本贴地址    
作者: upxshell [kuangren]    论坛用户   登录
#include <iostream>
int main()
{
       char myChar;
     short int myInt;
     long myLong;
     float myFloat = 7e4;
 std::cout << myChar;
     std::cout << ' ';
     std::cout << myInt;
     std::cout << ' ';
     std::cout << myLong;
     std::cout << ' ';
     std::cout << myFloat;
     return 0;
}
他们输出的结果为什么是p 4464 70000 70000 
是怎么换算的。谢谢!
还有一个
#include <iostream>
int main()
{
    char name[3];
    std::cout << "Enter a name...";
    std::cin >> name;
    std::cout << "The name you entered was " << name
              << std::endl;

    return 0;
为什么上边的[3]没起作用了,还是最多可以输入20个字符,如果没有[3],输入的数字只显示一个。 
谁能帮忙给我解释一下,谢谢!


地主 发表时间: 06/24 09:13

回复: 286 [unique]   版主   登录
char myChar;
     short int myInt;
     long myLong;
     float myFloat = 7e4;
除了myFloat赋值了,其它都没赋值。但都分配了空间。空间里的数原来是什么现在就是什么。所以显示结果p 4464 70000都是随机数。再运行一次就不是这个结果了。最后一个70000=7e4=7*10^4。
第二个程序,C语言没有数组的边界检查,所以才会有缓冲区溢出漏洞。
这需要程序员自己注意缓冲区的大小,在VC上系统报错,显示某某内存为只读。。。。


B1层 发表时间: 06/24 12:12

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号