相关疑难解决方法(0)

if语句中的sizeof()运算符

#include <stdio.h>
int main(void)
{
    if (sizeof(int) > -1)
        printf("True");
    else
        printf("False");
}
Run Code Online (Sandbox Code Playgroud)

它打印False.为什么sizeof()不返回值if

c sizeof

39
推荐指数
3
解决办法
4135
查看次数

关于unsigned int的建议(江南风格版)

视频"江南风格"(我相信你已经听过)在youtube上的视图超过了20亿.事实上,谷歌表示,他们从未预料到视频会超过32位整数......这暗示谷歌使用的是视频 int 而不是unsigned视频.我认为他们必须重新编写代码以适应更大的视图.

检查他们的风格指南:https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Integer_Types

......他们建议"不要使用无符号整数类型",并给出一个很好的理由:unsigned可能是错误的.

这是一个很好的理由,但可以防范.我的问题是:一般来说编码练习是不是很糟糕unsigned int

c++ int unsigned styles 32-bit

20
推荐指数
4
解决办法
3559
查看次数

无符号int的位表示a = -1

什么是位表示unsigned int x =-1; 我们可以使用负整数分配unsigned int吗?

#include<stdio.h> 
int main(){
    unsigned int x = -1; 
    int y = ~0; 
    if(x == y) 
        printf("same"); 
    else
        printf("not same"); 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

相同

怎么可能,x是无符号的

#include<stdio.h> 

int  main()     
{

unsigned int x = -4; 
if (x == -4)
   printf("true");
else 
   printf("FALSE");
}
Run Code Online (Sandbox Code Playgroud)

输出:

真正

c integer-promotion

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

为什么此代码在C中返回false

好的,试着理解为什么下面的if语句是假的.我把它翻了出来,无法理解这里发生了什么.

#define SIZE (sizeof(arr)/sizeof(int))

int main(int argc, char** argv)
{
    int arr[] = {1,2,3,4,5,6,7,8};

    if ( -1 <= SIZE )
        printf( "true" );
    else
        printf( "false" );

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

c

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

有符号/无符号比较会产生意外结果

a是带符号的int并且包含-100 b是unsigned int并且包含500

a<b returns FALSE!!
Run Code Online (Sandbox Code Playgroud)

为什么到地球?:P

我可以将b转换为signed int并获得正确的结果,但是保持原样而不是结果让我感到惊讶,因为我不知道为什么-100 <500应该是假的,就像编译器转换为无符号类型一样自动(这显然不是程序员要求的).

如果我们保持原样,即第一个签名和第二个未签名,那么为什么要这样做

这真的很混乱.

现在我必须纠正我的所有代码,寻找有符号和无符号整数之间的比较,并将这两个变量转换为我的意思.: - /

在混合有符号和无符号类型时,我还需要注意其他任何情况吗?

请不要回答显而易见的"一般情况下使用无符号类型是不可取的,为什么不坚持只使用签名类型?你会更安全".谢谢.

干杯.

c c++ visual-c++

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

为什么以下循环执行

std::vector<int> tmp = ...
for(int i = 0; i <= tmp.size() - 3; i+=2){
    std::cout << "i: " << i << " , tmp.size(): " << tmp.size() << std::endl;
    if(tmp[i] == tmp[i+1]){
        final.push_back(tmp[i] * 2);
    }else{
        final.push_back(tmp[i]);
        final.push_back(tmp[i + 1]);
    }   
    std::cout << "\ntmp.size() at the end of loop: " << tmp.size() << "\n";         
}
Run Code Online (Sandbox Code Playgroud)

我有以下输出:

在此输入图像描述

为什么循环执行i明显要大得多tmp.size()

c++

-6
推荐指数
1
解决办法
106
查看次数

标签 统计

c ×4

c++ ×3

32-bit ×1

int ×1

integer-promotion ×1

sizeof ×1

styles ×1

unsigned ×1

visual-c++ ×1