单独使用整数math,我想“安全地”平均两个C ++的无符号整数。 我的意思是“安全地”避免溢出(以及其他任何可以想到的)。 例如,平均值200和5000很容易: unsigned int a = 200; unsigned int b = 5000; unsigned int average = (a + b) / 2; // Equals: 2600 as intended 但在4294967295和5000的情况下,则: unsigned int a = 4294967295; unsigned int b = 5000; unsigned int average = (a + b) / 2; // Equals: 2499 instead of 2147486147 我想到的最好的是: […]
在MySQL中,如果我们创build一个字段的数据types的INT ,并没有指定任何长度/值,那么它会自动成为int(11) ,如果我们设置属性UNSIGNED或UNSIGNED ZEROFILL那么它变成了int(10) 这个长度(1)在哪里?
我目前正在使用Accelerated C ++,并且在练习2-3中遇到了一个问题。 该程序的快速概览 – 该程序基本上是一个名字,然后在星号框架内显示一个问候 – 即你好! 周围被*的框架。 练习 – 在示例程序中,作者使用const int来确定问候与星号之间的填充(空格)。 然后他们要求读者作为练习的一部分,要求用户input他们想填充的大小。 所有这些似乎都很简单,我继续向用户询问两个整数( int )并存储它们,然后改变程序使用这些整数,在编译时除去作者使用的整数,虽然我得到以下警告; Exercise2-3.cpp:46:警告:有符号和无符号整数expression式之间的比较 经过一番研究,似乎是因为代码尝试将上述整数( int )中的一个与string::size_type ,这很好。 但我想知道 – 这是否意味着我应该将其中一个整数更改为unsigned int ? 明确说明我的整数是有符号还是无符号是重要的? cout << "Please enter the size of the frame between top and bottom you would like "; int padtopbottom; cin >> padtopbottom; cout << "Please enter size […]
Bjarne Stroustrup在C ++编程语言中写道: 无符号整数types非常适合将存储器视为位数组的用途。 使用unsigned而不是int来获得更多的位来表示正整数几乎不是一个好主意。 尝试通过声明variables无符号来确保某些值是正值将通常被隐式转换规则所破坏。 size_t似乎是无符号的“以获得更多的位来表示正整数”。 那么这是一个错误(或权衡),如果是这样,我们应该尽量减less在我们自己的代码中使用它? Scott Meyers的另一篇相关文章就在这里 。 总之,他build议不要使用无符号的接口,不pipe值是否总是正值。 换句话说, 即使负值是没有意义的,你也不一定要使用无符号的。
我特别想着unsigned int 。 这里是一个实际的例子:当你的身份列最大化时,你做什么? 有可能要么BigInt (8字节存储而不是4)或重构应用程序以支持负整数,甚至创build自己的规则, 如此答案中所示 ; 这些选项都不是最佳select。 UInt将是一个理想的解决scheme,但SQL Server不提供它(MySQL所在的地方)。 据我所知,无符号数据types不是SQL标准的一部分(SQL-2003),但对我来说仍然是一种浪费。 不包括这些(在SQL Server或标准中)的原因是什么?
我碰到过这个post( MySQL中的tinyint,smallint,mediumint,bigint和int有什么区别? ),并且意识到PostgreSQL不支持无符号整数。 任何人都可以帮助解释为什么是这样吗? 大多数情况下,我使用无符号整数作为MySQL中自动递增的主键。 在这样的devise中,当我将数据库从MySQL移植到PostgreSQL时,如何克服这一点? 谢谢。
我正在看这个video 。 Bjarne Stroustrup说无符号整数很容易出错并导致错误。 所以,你只有在真正需要的时候才能使用它们。 我也读过Stack Overflow的一个问题(但我不记得是哪一个),使用unsigned int可能导致安全漏洞。 他们如何导致安全漏洞? 有人可以通过一个合适的例子清楚地解释它吗?
我只是想知道在MySQL为INTtypes定义ZEROFILL什么好处/用法? `id` INT UNSIGNED ZEROFILL NOT NULL
我想比较一个无符号的int与这样一个签名的字符: int main(){ unsigned int x = 9; signed char y = -1; x < y ? printf("s") : printf("g"); return 0; } 我期待着o / p是“g”。 相反,它的“s”。 这里做了什么样的转换?
为什么无符号整数不符合CLS? 我开始认为型号规格只是为了性能,而不是正确性。