示例代码:
long num1 = -1;
unsigned long num2 = 1;
if (num1 > num2)
printf("Num1 is greater\n");
else
printf("Num2 is greater\n");
为什么这个值将num1 > num2计算为true而不是false?
我有个问题。我的节目里有台词:
sprintf(buff,"Nieznany znak: %d",(char)va_arg(x, const char)); break;
为什么在编译后我有一个错误:
error.c: In function 'error':
error.c:30:46: warning: 'char' is promoted to 'int' when passed through '...' [e
nabled by default]
case 0xfe: sprintf(buff,
C中无符号int的大小是0 to 65,535 or 0 to 4,294,967,295。
我用C语言进行了以下代码的测试:
unsigned int number = 0;
number -= 300;
printf("%d\n", number);
输出:-300
我记得,如果unsigned int变量的值低于0,它应该环绕,并且我期望输出类似于4294966996。但是,从控制台输出的输出是-300。
我在C++中测试了类似的语句,它确实给了我4294966996。
我的问题是:为什么输出-300,尽管它是一个unsigned int
PS:我看过几篇标题相似的帖子
我想能够搜索使用名称,电话号码,客户,电子邮件等所有在同一个搜索字段。但是有些列是INT列,有些列是VARCHAR列,我得到了一个语法错误,我不知道为什么。我试着使用CAST来解决这个问题,但我仍然会遇到错误。
$search = $_POST['search'];
var_dump($search);
try {
$sql = "SELECT * FROM customers WHERE CAST(custid as VARCHAR) LIKE '%$search%' OR firstname LIKE '%$search%'
编辑:更改了USHRT_MAX的值,因为它不符合,如注释所示。
假设您有一个花哨的编译器,其中其整数类型限制(在Lims.h中定义)是:
#define INT_MAX 2147483647 /* Typical 32-bit system value */
#define USHRT_MAX 2147483647 /* ***Edited***, original question had 2000000000 */
在我的应用程序中,我有以下代码:
unsigned short a = 1500000000;
unsigned short b = 1500000000;
un
我有一个包含2列id和myvalue的表。id是主键,myvalue是unsigned smallint。id 1的当前myvalue为0。我有以下sql查询:
UPDATE tablename SET myvalue = IF(myvalue - 1 > 0, myvalue - 1, 0) WHERE id = 1;
我得到以下错误:
ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in '(`dbname`.`tablename`.`myvalue` - 1)'
知道为什么会这样吗?我找不到任何关于
我正在阅读Array.prototype.some在上的实现。
它包含了一段入侵代码:
var t = Object(this);
var len = t.length >>> 0;
for (var i = 0; i < len; i++) {
为什么它调用len = t.length >>> 0而不是len = t.length
>>> 0有什么不同?
有问题的代码如下:
subroutine PG_TLab_Write(c30,r,d)
implicit none
character*30 c30,leftjust
real*4 r
integer*4 d,k
if (d.eq.0) then
write(c30,'(i30)') nint(r)
elseif (d.gt.0) then
write(c30,'(f30.<d>)') r
else
k = abs(d)
write(c30,'(1pe30.<k>
我试图在iOS和OpenGL ES中开发一个基本的游戏,但是我在制服上遇到了这个问题,下面是将值传递给我的制服的代码:
glBindVertexArrayOES(_vertexArray);
// Render the object with ES2
glUseProgram(self.shaderProgram);
glUniformMatrix4fv(uniformModelViewProjection, 1, 0, modelViewProjectionMatrix.m);
// Get uniform center position
glUniform4fv(uniformCen
代码如下:目标是判断数组中所有成员的和是正还是负。我知道无符号int是一个错误,因为我想看看它会打印什么。所以问题是为什么它打印负数,我的意思是,将负整数赋值给无符号整数的结果是什么。
#include <stdio.h>
#define ARR_SIZE 5
int main() {
int array[ARR_SIZE] = {1,-2,3,4,-5};
unsigned sum;
int i;
for ( i = 0, sum=0; i < ARR_SIZE; i++ )
sum += array[i];
if( sum > -1 ) printf
我在上看到了下面的示例
int x; // OK: the value of x is indeterminate
int y = x; // undefined behavior
在这里,int y = x;是未定义的行为,因为x未初始化。
但,
unsigned char c; // OK: the value of c is indeterminate
unsigned char d = c; // OK: the value of d is indeterminate
这里,unsigned char d = c;是不确定行为,但unsigned char c;也是一个
在我开始使用C#之前,我主要是有C/C++背景的。我在C#中的第一个项目中做的一件事就是创建一个这样的类
class Element{
public uint Size;
public ulong BigThing;
}
然后,我感到羞愧的是,这需要转换:
int x=MyElement.Size;
就像这样
int x=5;
uint total=MyElement.Size+x;
为什么语言设计者决定使有符号和无符号整数类型不能隐式强制转换?为什么在整个.Net库中没有更多地使用无符号类型呢?例如,String.Length永远不能为负,但它是一个带符号的整数。
当我打印以下内容时,为什么会得到-1?
unsigned long long int largestIntegerInC = 18446744073709551615LL;
printf ("largestIntegerInC = %d\n", largestIntegerInC);
我知道我应该使用llu而不是d,但是为什么我得到的是-1而不是18446744073709551615LL?
是因为溢出吗?
我正在阅读Andrew和BarbaraE.Moo所著的“加速C++”一书,并对第二章中的主要例子提出了一些问题。代码可以概括如下,并且正在使用g++编译而没有警告/错误:
#include <string>
using std::string;
int main()
{
const string greeting = "Hello, world!";
// OK
const int pad = 1;
// KO
// int pad = 1;
// OK
// unsigned int pad = 1;
当我运行下面的程序时,它输出类似109876543210-1-2-3-4-5-6-78-9-10-11-12-和s0 on。为什么会这样呢?无符号整数的概念是什么?
main ()
{
unsigned int i;
for (i = 10; i >= 0; i--)
printf ("%d", i);
}