您的位置:程序门 -> c/c++ -> c++ 语言



如何写一个宏判断一个数是否为十进制数?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何写一个宏判断一个数是否为十进制数?
发表于:2007-01-06 22:16:25 楼主
求教
发表于:2007-01-06 22:21:371楼 得分:0
111   是二进制?八进制?十进制?十六进制?
发表于:2007-01-06 22:23:512楼 得分:0
姑且里面没字母的都算十进制吧
发表于:2007-01-06 22:24:593楼 得分:0
10进制没有前缀.
16进制有0x前缀.
你可以和别人约定怎样的输入格式来判断是什么进制.
发表于:2007-01-06 22:33:544楼 得分:0
那怎么写一个宏test(x),如果是test(123)就返回true,如果是test(0x123)就返回false
发表于:2007-01-06 23:01:195楼 得分:0
判断字符串头两个字符啊
发表于:2007-01-06 23:18:456楼 得分:0
怎么把参数变成字符串啊
发表于:2007-01-07 09:53:027楼 得分:0
能做这个工作么   ?
发表于:2007-01-07 09:55:168楼 得分:0
#include   <stdio.h>
#include   <stdlib.h>

#define   test(x)   ((#x)[0]   ==   '0 '?   0   :   1)
int   main()
{
        printf( "%d\n ",test(123));
        printf( "%d\n ",test(0x123));      

        system( "pause ");
        return   0;
}
发表于:2007-01-07 09:56:419楼 得分:0
根据前缀是否有   0x   判断
发表于:2007-01-07 10:04:2710楼 得分:0
楼上的高手,可否解释下:((#x)[0]   ==   '0 '?   0   :   1)?
发表于:2007-01-07 13:24:0411楼 得分:0
好像没有什么实际意义

jixingzhong的方法估计也不行
发表于:2007-01-07 14:29:0612楼 得分:0
那只是判断是否有0在最前面而已.

((#x)[0]   ==   '0 '?   0   :   1)

#x     会变成字符串 "x的内容 "
然后退化成守地址,[0]取第一个元素
发表于:2007-01-07 15:07:3913楼 得分:0
(#x)[0]   ==   '0 '   ?   0   :   1   不过判断了   串的首字符是否为0   应该不可以判断10进制数吧
发表于:2007-01-07 15:10:5614楼 得分:0
先说说你写这个做什么。奇怪的实现往往出于糟糕的设计。
发表于:2007-01-08 09:54:2315楼 得分:0
jixingzhong(瞌睡虫·星辰)   漏了数字0的处理。
确保一个字符串是合法十进制数的c++代码是
bool   isdec(string   s)
{
        istringstream   str_stream(s);
        int   r   =   0;
        str_stream   > >   r;
        return   str_stream.eof()   &&   !str_stream.fail();
}
发表于:2007-01-08 19:35:0916楼 得分:0
没看懂   istringstream   是个字符串流吧   需要预处理命令吧
哪位仁兄能否解释下   以上代码   想学习下??
发表于:2007-01-08 22:41:2117楼 得分:0
bool   isdec(string   s)
{
        istringstream   str_stream(s);//字符串流,类似cin输入流,但它是用string对象构造的.
        int   r   =   0;
        str_stream   > >   r;//如果遇到不能解释为数的字符,字符串流会设置一个标志位,使后面的
str_stream.fail();返回真
        return   str_stream.eof()   &&   !str_stream.fail();//第一个判断是看转换为整数后是否到了串末尾,第二个判断是看是否成功转换
}
发表于:2007-01-09 09:51:5718楼 得分:0
用isalpha吧,因为首先得为一个数(非字母或其它符号),其次才是10进制,isalpha也能搞定0x打头的
发表于:2007-01-09 10:46:4519楼 得分:0
用isdigit?
发表于:2007-01-09 16:55:5220楼 得分:0
该回复于2007-12-28 13:21:00被管理员或版主删除
发表于:2007-01-09 16:58:0021楼 得分:0
那怎么写一个宏test(x),如果是test(123)就返回true,如果是test(0x123)就返回false

不可能。
发表于:2007-01-09 17:00:4022楼 得分:0
刚想到,发现虫子已经写过了。鄙视自己。


快速检索

最新资讯
热门点击