Questions tagged «unsigned»

无符号变量是只能代表非负数的变量。

5
有符号/无符号比较
我试图理解为什么以下代码没有在指定的位置发出警告。 //from limits.h #define UINT_MAX 0xffffffff /* maximum unsigned int value */ #define INT_MAX 2147483647 /* maximum (signed) int value */ /* = 0x7fffffff */ int a = INT_MAX; //_int64 a = INT_MAX; // makes all warnings go away unsigned int b = UINT_MAX; bool c = false; if(a < …


5
如何在Java 8和Java 9中使用无符号整数?
在Oracle“原始数据类型”页面中,它提到Java 8添加了对无符号int和long的支持: int:默认情况下,int数据类型是32位带符号的二进制补码整数,其最小值为-2 31,最大值为2 31 -1。在Java SE 8和更高版本中,可以使用int数据类型表示无符号的32位整数,其最小值为0,最大值为2 32 -1。使用Integer该类可将int数据类型用作无符号整数。有关更多信息,请参见“数字类”部分。像静态方法compareUnsigned,divideUnsigned等已被添加到Integer类,以支持算术运算的无符号整数。 long:long数据类型是64位二进制补码整数。带符号long的最小值为-2 63,最大值为2 63 -1。在Java SE 8和更高版本中,可以使用long数据类型表示无符号的64位long,其最小值为0,最大值为2 64 -1。当您需要一个比int提供的值宽的值范围时,请使用此数据类型。该Long班还包含方法,如compareUnsigned,divideUnsigned等支持算术运算的无符号long。 但是,我发现没有办法声明无符号的long或integer。例如,以下代码在应该在范围内时(给出的值恰好是2 64 -1)给出了“文字超出范围”的编译器错误消息(我使用的是Java 8 )。 : public class Foo { static long values = 18446744073709551615L; public static void main(String[] args){ System.out.println(values); } } 那么,有什么方法可以声明一个无符号的int或long?
81 java  java-8  unsigned 


3
“ strlen(s1)-strlen(s2)”从不小于零
我目前正在编写一个C程序,该程序需要经常比较字符串长度,因此我编写了以下帮助程序函数: int strlonger(char *s1, char *s2) { return strlen(s1) - strlen(s2) > 0; } 我注意到即使s1长度比短,该函数也会返回true s2。有人可以解释这种奇怪的行为吗?
77 c  string  debugging  unsigned 



1
这是std :: gcd中的错误吗?
我遇到了这种std::gcd意外的行为: #include <iostream> #include <numeric> int main() { int a = -120; unsigned b = 10; //both a and b are representable in type C using C = std::common_type<decltype(a), decltype(b)>::type; C ca = std::abs(a); C cb = b; std::cout << a << ' ' << ca << '\n'; std::cout << …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.