鱼C论坛

 找回密码
 立即注册
查看: 2812|回复: 2

请问char做数字用,用什么参数接收?

[复制链接]
发表于 2013-8-17 21:11:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 newmonk 于 2013-8-17 21:18 编辑

char类型,在使用中是可以做数字使用的。signed char的值域为-128~127,unsigned char的值域为0~255。请看下面的代码:
  1. #include "stdafx.h"
  2. int _tmain(int argc, _TCHAR* argv[])
  3. {
  4.         char 数1=0;
  5.         printf("数1=%d",数1);
  6.         getchar();
  7.         return 0;
  8. }
复制代码




上面的代码,在VS2010下,测试是正常的。但如果scanf接收用户输入的内容就不正常了。请再看下面的代码:
  1. #include "stdafx.h"
  2. int _tmain(int argc, _TCHAR* argv[])
  3. {
  4.         char 数1=0;
  5.         printf("请输入你的年龄:");
  6.         scanf_s("%d",&数1);//vs2010下要求这样写,不然会提示不安全。
  7.         getchar();
  8.         printf("你的年龄是%d岁!",数1);
  9.         getchar();
  10.         return 0;
  11. }
复制代码

提示如下信息:Run-Time Check Failure #2 - Stack around the variable '数1' was corrupted.
解决的办法只能是把数1的类型定为int,或把数1的类型定为short并且把scanf_s("%d",&数1);改为scanf_s("%hd",&数1)。


奇怪的是上面的代码在VS6下测试却是正常的,请问,在VS2010下如果把char类型做数字用,且要求用户输入,我应该用什么参数接收?%?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-17 21:40:26 | 显示全部楼层
scanf_s("%c",&数1);

printf("你的年龄是%d岁!",数1);


这样不行吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-17 21:59:16 | 显示全部楼层
2楼试下就知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-15 00:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表