如何在编译时判断一个~类型~是否为unsigned
在这个贴子中:VIA笔试题,怎么写程序判断一个数是unsigned int还是int?(http://community.csdn.net/Expert/topic/4359/4359119.xml?temp=.8052027)
在该贴中我曾经提出“C++是静态编译的,在编译时就应已经知道变量的类型啊?”,后来在一次编程实践中,我发现在标准库有太多的typedef,你可能一不小心写下这样的代码:
#ifdef USE_UNSIGNED_INT
typedef unsigned int size;
#else
typedef int size;
#endif
latter in the program:
size i = XXX;
for (; i >=0 ; i--) //problematic, if the i is the unsigned it!!!
{
}
这段代码有问题的!如果size被定义成无符号类型,那么这将是一个无限循环!昨天我去各论坛问了下“如何在编译时判断一个~类型~是否为unsigned”,现在已经找到方法了:
#include <boost/static_assert.hpp>
#include <limits>
BOOST_STATIC_ASSERT(std::numeric_limits<size>::is_signed);
该方法会在编译时判断size是否为有符号的类型,如无符号则出错!
在该贴中我曾经提出“C++是静态编译的,在编译时就应已经知道变量的类型啊?”,后来在一次编程实践中,我发现在标准库有太多的typedef,你可能一不小心写下这样的代码:
#ifdef USE_UNSIGNED_INT
typedef unsigned int size;
#else
typedef int size;
#endif
latter in the program:
size i = XXX;
for (; i >=0 ; i--) //problematic, if the i is the unsigned it!!!
{
}
这段代码有问题的!如果size被定义成无符号类型,那么这将是一个无限循环!昨天我去各论坛问了下“如何在编译时判断一个~类型~是否为unsigned”,现在已经找到方法了:
#include <boost/static_assert.hpp>
#include <limits>
BOOST_STATIC_ASSERT(std::numeric_limits<size>::is_signed);
该方法会在编译时判断size是否为有符号的类型,如无符号则出错!
...全文
相关推荐
中南民族大学计算机C语言试题10套.pdf
=0)用于判断是否为闰年。16. 流程控制的嵌套使用: - 在循环和条件语句中嵌套使用其他控制结构,如for循环嵌套。17. C语言标准库函数: - 使用标准库函数如putchar()打印字符。
2014大疆嵌入式笔试题_嵌入式-常用知识&面试题库_大厂面试真题.docx
在64位机器上使用32位编译时,Garfield变量占用的内存空间将如何计算?首先,我们需要了解结构体的对齐规则。在C语言中,结构体的成员变量会根据其类型对齐到对应的边界上。
C++实现判断一个字符串是否为UTF8或GBK格式的方法
C++实现判断一个字符串是否为UTF8或GBK格式的方法C++中判断一个字符串是否为UTF8或GBK格式的方法是非常重要的,尤其是在处理外部数据时,可能会因为数据格式不一样而导致乱码,甚至导致某些程序崩溃
深入解析unsigned int 和 int
以下是一个简单的示例程序,演示了unsigned int 的行为:```c#include <stdio.h>int main() { unsigned short int a = 32767; unsigned
C语言中unsigned、类型转换与程序的可移植性.pdf
从表中可以看到,unsigned char的最小取值范围为0~255,signed char的最小取值范围为-128~127;unsigned int的最小取值范围为0~4294967295,signed


