c++有符号变量和无符号变量相加的结果

#include <stdio.h>

char getChar(int x,int y)
{
    char c;
    unsigned int a = x;
    (a+y>10)?(c=1):(c=2);
    return c;
}

int main()
{
    char c1 = getChar(7, 4);
    char c2 = getChar(7, 3);
    char c3 = getChar(7, -7);
    char c4 = getChar(7, -8);

    printf("c1=%d\n",c1);
    printf("c1=%d\n",c2);
    printf("c1=%d\n",c3);
    printf("c1=%d\n",c4);
    return 0;

}

1 2 2 1

无符号和有符号都会变成无符号的 所以 7+4>10 1 7+3=10 2 -7会变成一个很大的数和7相加刚好溢出为0 所以<10 为2 -8变成一个很大数 和7 相加没有溢出还是一个很大的数 所以>10  为 1

时间: 2024-10-09 14:33:51

c++有符号变量和无符号变量相加的结果的相关文章

【c语言】有符号数据类型与无符号数据类型的计算

// 有符号数据类型与无符号数据类型的计算 #include <stdio.h> int main() { char c;// -128~127 unsigned char uc;//0~255 unsigned short us;// 0~65535 c = 128; uc = 128; // 字符型给短整型赋值有默认的类型提升,前边八位补其符号位 us = c + uc; // us = -128 + 128 = 0即1111 1111 1000 0000 + 0000 0000 1000

【C语言面试题】第1题:有符号变量和无符号变量的值得转换

#include <stdio.h> char getChar(int x,int y) {         char c;         unsigned int a = x;         (a + y > 10) ? (c = 1) : (c = 2);         return c; } int main(void) {         char c1 = getChar(7,4);         char c2 = getChar(7,3);         char

有符号int和无符号int的比较

int array[] = {1,2,3,4}; #define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0])) int main() { int d = -1; if(d <= TOTAL_ELEMENTS) printf("TRUE\n"); else printf("FALSE\n"); } sizeof()返回类型为无符号整型unsigned int,因此代码中的TOTAL_ELEMENTS值是unsig

有符号数、无符号树混合计算问题。

今天在线刷题,其中一个问题总是结果跟期望的不一样,在一次次的检查程序逻辑.确认无误后,还是不能通过,不得已用VS开始调试! 这里是我的程序代码: 1 // maxDepth.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include<vector> 6 #include<iostream> 7 #include<limits.h> 8 9 using namespace std; 10 1

有符号char转无符号short

char ch = 255; cout<<(int)ch<<endl; //-1 unsigned short d = ch; short dd = ch; cout<<d<<endl;//65535(2^16 - 1) cout<<dd<<endl;//-1 要点是:这里char是有符号的!.(255) = 0xff.因为char有符号,所以拿出来的整型值是-1,将-1给无符号的unsigned short d 会将ff放在低字节的

两个无符号类型想减结果存储的临时变量还是无符号类型

1 #include <stdio.h> 2 int main() 3 { 4 unsigned int dwVal = 0; 5 unsigned __int64 n64Val = 1; 6 if( dwVal - n64Val >= 20) 7 { 8 printf("%I64d\n",dwVal - n64Val); //执行这行,输出 -1 9 } 10 return 0; 11 } 个人分析: 在做想减操作(dwVal - n64Val)时,会将dwVal和

有符号位和无符号位。——int8疑问有感

学习go语言的数据类型,看见int.int8.int16很是疑惑,int8是什么意思?查询资料进行综合解释大概如下: Int8是有符号位8位整形(-128到127),随即产生疑惑,为什么负数可表示到-128,正数只能127,少一位是为什么? 解答:有符号位的表达形式是最高位是符号位,其余是数值,正数的表达方式:最高位为0表示正数,其实位表其数值:负数的表达形式:最高位为1表示负数,其数值是将每一位(包括表示正负的最高位)取反后加1. 举例:int4 正负数最小绝对值1:    -1 1111,

有符号与无符号变量之间的转换

// 有符号变量和无符号变量的转换.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" char getChar(int x, int y) { char c; unsigned int a = x; (a+y > 10)? (c=1):(c=2); return c; } /* 当表达式当中存在有符号类型和无符号类型时,所有的操作数都自动转化为无符号类型 */ int _tmain(int argc, _TCHAR* argv[]) { ch

C语言进阶剖析第二课--有符号和无符号

①计算机中的符号位 数据类型的最高位用于标识数据的符号 -最高位为1,表明这个数为负数 -最高位为0,表明这个数为正数 ②在计算机内部用补码表示有符号数 正数的补码为正数本身: 负数的补码为负数的绝对值各位取反再加1: ③在计算机内部用原码来表示无符号数 -无符号默认为正数 -无符号数没有符号位 对于固定长度的无符号数 MAX_VALUE + 1 =  MIN_VALUE MIN_VALUE - 1 = MAX_VALUE ④如果无符号数和有符号数相加,有符号数会转成无符号数,并且如果有符号数是