不学网

 找回密码
 立即注册

只需一步,快速开始

手机号码,快捷登录

查看: 537|回复: 8

[c/c++] 疑问

[复制链接]
wrx_ai3 发表于 2018-4-7 13:13:53 来自手机 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
本帖最后由 wrx_ai3 于 2018-4-7 13:15 编辑

我想要b的值结果却是a+b
???
IMG_20180407_130326.jpg
回复

使用道具 举报

admin 发表于 2018-4-7 14:47:54 | 显示全部楼层
什么地方输出了a+b的值 结果运行也看看  另外图片拍得很模糊看不太清楚
回复

使用道具 举报

 楼主| wrx_ai3 发表于 2018-4-7 15:15:12 来自手机 | 显示全部楼层
admin 发表于 2018-4-7 14:47
什么地方输出了a+b的值 结果运行也看看  另外图片拍得很模糊看不太清楚

#include<stdio.h>
int change16_10(const unsigned int dat){
    uint dat1 = dat,dat2;
    int num,n =1;
    while(dat1 > 0){
         dat2 = dat1 % 10;
         dat1 /= 10;
         num = num + dat2 * n;
         n *= 10;
    }
    return (num - 1);
}
int main(){
    int a,b;
    a = change16_10(0x1000);
    b = change16_10(0x0199);
    printf("%d   %d",a,b);
    return 0;
}

//a的值是4096,b的值是409
//但是b在这里 是a+b的值4505
回复

使用道具 举报

rain1994 发表于 2018-4-7 20:44:18 | 显示全部楼层
wrx_ai3 发表于 2018-4-7 15:15
#include
int change16_10(const unsigned int dat){
    uint dat1 = dat,dat2;

#include<stdio.h>
//十六进制到十进制
int change16_10(int dat){
    int dat1 = dat,dat2;
    int num=0,n =1;
    while(dat1 > 0){
         dat2 = dat1 % 10;
         dat1 /= 10;
         num = num + dat2 * n;
         n *= 16;
    }
    return num ;
}
int main(){
    int a,b;
    //1000 199为十六进制的数
    a = change16_10(1000);
    b = change16_10(199);
    printf("%d   %d\n",0x1000,0x0199);
    printf("%d   %d",a,b);
    return 0;
}

4096   409
4096   409
回复

使用道具 举报

 楼主| wrx_ai3 发表于 2018-4-7 23:16:06 来自手机 | 显示全部楼层
rain1994 发表于 2018-4-7 20:44
#include
//十六进制到十进制
int change16_10(int dat){

这主函数中  如果把实参  1000,199换成0x1000,0x199  就又不对了
这是为什么
回复

使用道具 举报

 楼主| wrx_ai3 发表于 2018-4-7 23:22:18 来自手机 | 显示全部楼层
rain1994 发表于 2018-4-7 20:44
#include
//十六进制到十进制
int change16_10(int dat){

16_10函数中  n *= 16 好像不太对
回复

使用道具 举报

 楼主| wrx_ai3 发表于 2018-4-7 23:32:21 来自手机 | 显示全部楼层
rain1994 发表于 2018-4-7 20:44
#include
//十六进制到十进制
int change16_10(int dat){

我希望 实参中保留  0x
回复

使用道具 举报

rain1994 发表于 2018-4-7 23:39:21 来自手机 | 显示全部楼层
wrx_ai3 发表于 2018-4-7 23:16
这主函数中  如果把实参  1000,199换成0x1000,0x199  就又不对了
这是为什么

1000是要看做十六进制的1000但在计算机里面运行的是十进制的1000,而0x1000就表示十六进制的数,在计算机中十进制的值为4096。你传0x1000相当于传4096。
回复

使用道具 举报

 楼主| wrx_ai3 发表于 2018-4-8 08:43:27 来自手机 | 显示全部楼层
rain1994 发表于 2018-4-7 23:39
1000是要看做十六进制的1000但在计算机里面运行的是十进制的1000,而0x1000就表示十六进制的数,在计算机 ...

谢谢   就是这里没搞清楚
那我直接就不需要转换了,可以直接用
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|不学网

GMT+8, 2018-7-23 08:14

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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