c输入数据溢出和c++输入数据溢出的区别

c输入数据溢出和c++输入数据溢出的区别,第1张

对于c++来说,前提条件,c++版本不易过低,太低的和c的机制差不多。
看下面两个程序:

cpp代码

#include 
int main() {
  int u;
  scanf("%d", &u);
  printf("%d\n", u);
  return 0;
}

c代码

#include 
int main() {
  int u;
  scanf("%d", &u);
  printf("%d\n", u);
  return 0;
}

cstdio与stdio.h是不同的一个属于c++,一个属于c,但是他们都可以调用scanf()和printf()
当我们输入数据:4294967295
c++的处理会对输入的数据进行检测,最终以溢出的方向进行收敛,负溢出收敛为int型的最小值,正溢出收敛为int型的最大值。
c的处理是会对输入数据的二进制从低到高位存到内存中,只读4字节,所以如果位超过4字节,多余的的舍弃,然后以对int型的解释方法解释二进制数据,在代码中的表现是隐式转化,答案为-1。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/733509.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-27
下一篇2022-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存