我正在向朋友教授C编程语言,我们想出了一些我无法解释的东西.这是我们写的代码:
#include <stdio.h> int main(void) { char num1; char num2; printf("%s","Enter the first number: "); scanf("%d",&num1); printf("%s%d\n","The number entered is:",num1); printf("%s","Enter the second number: "); scanf("%d",&num2); printf("%s%d\n",num2); printf("%s%d\n","The first number entered was:",num1); /* This was done for testing */ printf("%s%d\n","The sum is:",num1+num2); return 0; }
奇怪的是,我们尝试做5 6并且我们期望得到11但是得到6,我添加了一行来查看第一个数字发生了什么,并且在读取第二个数字后它变为0.
我知道变量应该是一个int(实际上原始代码就是这样并且有效)但我的理解是char是一个小整数,所以我认为如果我们添加小数字就会“安全”使用.
代码在具有cc的Linux机器上和在具有cl的Windows机器上进行测试和编译.输出是一样的.在Windows机器上,程序在添加后抛出错误.
我想解释为什么这段代码没有像我预期的那样工作.先谢谢.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。