相关疑难解决方法(0)

使用-1将所有位设置为true是否安全?

我已经看到这种模式在C&C++中使用了很多.

unsigned int flags = -1;  // all bits are true
Run Code Online (Sandbox Code Playgroud)

这是一个很好的便携式方法吗?或正在使用0xffffffff~0更好?

c c++ binary bit-fields

130
推荐指数
9
解决办法
3万
查看次数

unsigned int和signed char比较

我试图将unsigned int与这样的signed char进行比较:

int main(){
  unsigned int x = 9;
  signed char y = -1;
  x < y ? printf("s") : printf("g");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我期待o/p为"g".相反,它的"s".这里进行了什么样的转换?

c type-conversion char unsigned-integer

4
推荐指数
1
解决办法
5035
查看次数

为什么C不运行unsigned int与负值的比较?

考虑这个C代码:

#include "stdio.h"

int main(void) {

    int count = 5;
    unsigned int i;

    for (i = count; i > -1; i--) {
        printf("%d\n", i);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的观察/问题:循环永远不会被执行.但是,如果我将i的数据类型从unsigned int更改为int,则一切都按预期工作.

我一直在考虑使用无符号整数作为当你试图从它们中减去时"环绕"的值.因此,当i为零并且我减去1时,它将回绕到UINT_MAX.而且由于它的价值永远不会消极,这实际上是一个无限循环.(当我将比较从i> -1更改为i> = 0时,这正是发生的情况.)

在我的逻辑中某处有一个错误,因为如果我是无符号的,循环永远不会执行,我将它与-1进行比较.编译器要么以某种方式优化它,要么运行时值的行为与我期望的不同.

为什么循环不能运行?

c optimization unsigned-integer

4
推荐指数
1
解决办法
2868
查看次数

这段代码的“假”输出背后的原因是什么?

此 C 代码给出输出“False”并且else块正在执行。

的值为sizeof(int)4,但 的值为sizeof(int) > -10。

我不明白发生了什么。

#include <stdio.h>
void main()
{
    if (sizeof(int) > -1 )
    {
       printf("True");
    }
    else
    {
        printf("False");
    }
    printf("\n%d", (sizeof(int)) ); //output: 4
    printf("\n%d", (sizeof(int) > -1) ); //output: 0
}
Run Code Online (Sandbox Code Playgroud)

c comparison unsigned gcc sizeof

4
推荐指数
1
解决办法
81
查看次数

为什么sizeof(int)不大于-1?

这是我的C代码:为什么输出"False"?????

为什么4> -1 ???

代码:

#include <stdio.h>

int main() {
    if (sizeof(int) > -1)
        printf("True");
    else
        printf("False");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ sizeof

3
推荐指数
1
解决办法
309
查看次数

为什么(sizeof(int)> -1)为false?

你可以证明以下代码:

#include<stdio.h>
int main()
{
    if(sizeof(int) > -1)
    {
            printf("\nTrue\n");
    }
    else
    {
            printf("\nFALSE\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是FALSE.....建议我的原因

c sizeof

1
推荐指数
1
解决办法
728
查看次数

为什么下面的表达式结果是正确的,专门要求 C++

#include <iostream>
using namespace std;

int main()
{
    if(sizeof(int)> -1)
        cout<<"ok";
    else
        cout<<"not ok";

    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

int的大小不是应该是4吗,它应该大于-1。

c++

1
推荐指数
1
解决办法
93
查看次数

为什么sizeof(int)小于-1?

在以下代码中

#include <stdio.h>

int main()
{
   if (sizeof(int) > -1)
       printf("True");
   else
       printf("False");
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到输出为"False"而不是"True".我的理解是sizeof运算符只返回int的大小,在这种情况下为4.

为什么评估条件为假?

c sizeof

0
推荐指数
1
解决办法
4134
查看次数