C语言如何定义一个16进制数

想用SCANF输入一个16进制数,不知道如何定义.... 想用SCANF输入一个16进制数,不知道如何定义. 展开
 我来答
问明6E
高粉答主

2019-05-27 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:13万
展开全部

例:

int main(){

int a;

scanf("%p",&a);//16进制数输入%p是输入一个十六进制的数scanf("%llx",&a);也可以输入十六进制并且比较正规

printf("%d",a);//十进制输出%d是输出一个十进制的数

printf("0x%x",a);//16进制输出printf("%llX\n",a);也可输出一个十六进制数如果红色部分大写X则输出十六进制为大写字母否则小写x输出为小写字母

}

参考:

最大数字是15位,没有超过__int64能表达的最大数。__int64最大能表示16位十六进制数。所以直接进行加减就行了,需要注意的是输入输出的格式以及十六进制表达负数的时候显示的是补码。

#include<stdio.h>

int main(void)

{

long long a,b,result;

while(scanf("%llx%llx",&a,&b)!=EOF){

result=a+b;

if(result>=0)

printf("%llX\n",result);

else

printf("-%llX\n",-result);

}

return 0;

}

long long 类型格式字符:


扩展资料:

return用法:

作用是结束正在运行的函数,并返回函数值。return后面可以跟一个常量,变量,或是表达式

函数的定义一般是这样的,例如:

int a(int i)//第一个int是函数的返回值的类型,也就是return后面跟的值的类型,a是函数的名称,括号里的是传递给函数的参数,int是参数的类型,i是参数的名字

{

...//省略函数体内容

return b;//b必须与函数头的返回值一致(此处为int型)

}

简单函数举例:

int addOne(int b)

{

return b+1;

}

该函数的作用是取得一个数,将这个数加上1,再将结果返回

调用时这样:

int result=addOne(2);//此时result的值为3

函数括号里的参数也可以为变量或能算出值的表达式

以上就是一个基本的函数,一般的函数都有返回值,也就是return后面跟的值,返回值可以为各种数据类型,如:int,float,double,char,a[](数组),*a(指针),结构或类(c++)

但不是所有函数都有返回值,如果某个函数无返回值,那么返回值的位置则为“void”关键字,此时函数体中无返回值,即无return的值。但是函数中也可出现return,即一个空的return句子,其作用是使函数立即结束,如

void print()//括号中为空表示无传递参数

{

printf("a");

printf("b");

return;//函数执行到此处结束

printf("c");

}//该函数只执行到return语句处,即屏幕上输出的为"ab"

匿名用户
2013-08-18
展开全部
整型数据的十六进制数表示,
unsigned int hex_val = 0x123; //定义了一个整型变量并赋以初始值为一个十六进制常量。
if (scanf("%x", &hex_val) != EOF) {
printf("它的八、十进制分别=%o、%d\n", hex_val, hex_val);
}
你也可以输入一个由0-9-A-F中组成的连续的字符序列,然后检查它是否为合法的十六进制数格式,最后,如果需要,可用函数strtoul将这个字符串指针作为base参数转换成数值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-20
展开全部
unsigned long int value; _Bool hex_value = scanf("%x", &value); //用说明转换%xif(hex_value) //正确输入了一个合法的十六进制值 .... 或者用字符串:#include <ctype.h>#include <string.h>const int LEN = 32;char hexstr[LEN + 1]; fgets(hexstr, LEN, stdin);hexstr[strchr(hexstr, '\n') - hexstr] = '\0';// 检查是否是合法的十六进制串,size_t i = 0;while(hexstr[i] != '\0') { if(strchr("0123456789AaBbCcDdEeFf", hexstr[i]) == NULL) // or use (! isxdigit(hexstr[i])) break; ++i;}bool hexValue = (hexstr[i] != '\0');if(hexValue) ...//随便写下,您可能要涉想问到如何保证一个十进制数的数字编码具有连续的值,那么可以用下面这种惯用法实现(无溢出检查)数字转换功能 ^ ^,给你写出来int chtoi(const char ch){ if('0'<=ch && ch <='9') //or use isdigit(ch) return (ch - '0'); else return (-1);}for(value = 0; isdigit(*sc); ++sc) {
value = value * 10 + chtoi(*sc);}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
戚文柏Ro
推荐于2017-11-28 · TA获得超过336个赞
知道小有建树答主
回答量:400
采纳率:100%
帮助的人:403万
展开全部
没有直接定义的
八进制,在赋值的数字前面加0 如int n=010; 即把一个八进制10复制十进制变量n
十六进制,在赋值的数字前面加0x 如int n=0x10;即把一个十六进制10复制十进制变量n
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-20
展开全部
scanf("%x",&a);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式