c语言将unsigned char 转换成int,C语言int转换unsignedchar使用vs2010创建控制 爱问知识人...

博客作者在VS2010环境下遇到一个编程问题,当尝试将一个int类型的返回值转换为unsigned char时,值发生了变化。然而,直接将int值赋给unsigned char变量则没有问题。作者通过代码展示了这个问题,并提到已经找到了答案,但具体解决办法未在摘要中给出。问题涉及到数据类型转换和可能的溢出问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用 vs2010 创建控制台程序,int 转换 unsigned char时,遇到奇怪问题,。我使用一个函数返回一个int值,赋值 unsigned char时值发生了变化,可是当直接定义一个int值,赋值给unsigned char变量时却没有问题,请问这是什么原因啊?

代码如下

int mod;

if (getExtendedEuclid( 2,283 ,&mod) == 1)

{

printf("mod---%d

",mod);

unsigned char testu = mod;

printf("testu---%hhu

",testu);

int testi = 141;

testu = testi;

printf("testu---%hhu

",testu);

}

int getExtendedEuclid( int f,int d ,int *result)

{

int x1,x2,x3,y1,y2,y3,t1,t2,t3,q;

x1 = y2 = 1;

x2 = y1 = 0;

x3 = d;

y3 = f;

while( 1 )

{

if ( y3 == 0 )

{

*result = x3; /* 两个数不互素则result为两个数的最大公约数,此时返回值为零 */

return -1;

}

if ( y3 == 1 )

{

*result = y2 ; /* 两个数互素则resutl为其乘法逆元,此时返回值为1 */

return 1;

}

q = x3/y3;

t1 = x1 - q*y1;

t2 = x2 - q*y2;

t3 = x3 - q*y3;

x1 = y1;

x2 = y2;

x3 = y3;

y1 = t1;

y2 = t2;

y3 = t3;

}

}

运行截图如下:

已经找到答案。。。。。。

展开

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值