C语言中无符号数与有符号数运算有何规则?

2026-05-20 02:500阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1004个文字,预计阅读时间需要5分钟。

C语言中无符号数与有符号数运算有何规则?

C语言中,符号数和无符号数进行运算时,默认会将符号数视为无符号数进行计算。其中,算术运算默认返回无符号数,逻辑运算则返回0或1。

C语言中有符号数和无符号数进行运算(包括逻辑运算和算术运算)默认会将有符号数看成无符号数进行运算,其中算术运算默认返回无符号数,逻辑运算当然是返回0或1了。

unsigned int和int进行运算

直接看例子来说明问题吧

#include <iostream> using namespace std; int main() { int a = -1; unsigned int b = 16; if(a > b) cout<<"负数竟然大于正数了!\n"; return 0; }

输出结果为:

这是因为a和b进行比较的时候,编译器将有符号数a看成了无符号数,然后再和b进行比较,在内存中(32位)

a : 11111111 11111111 11111111 11111111

b : 00000000 00000000 00000000 00010000

看成无符号数,自然是a>b。

阅读全文
标签:运算

本文共计1004个文字,预计阅读时间需要5分钟。

C语言中无符号数与有符号数运算有何规则?

C语言中,符号数和无符号数进行运算时,默认会将符号数视为无符号数进行计算。其中,算术运算默认返回无符号数,逻辑运算则返回0或1。

C语言中有符号数和无符号数进行运算(包括逻辑运算和算术运算)默认会将有符号数看成无符号数进行运算,其中算术运算默认返回无符号数,逻辑运算当然是返回0或1了。

unsigned int和int进行运算

直接看例子来说明问题吧

#include <iostream> using namespace std; int main() { int a = -1; unsigned int b = 16; if(a > b) cout<<"负数竟然大于正数了!\n"; return 0; }

输出结果为:

这是因为a和b进行比较的时候,编译器将有符号数a看成了无符号数,然后再和b进行比较,在内存中(32位)

a : 11111111 11111111 11111111 11111111

b : 00000000 00000000 00000000 00010000

看成无符号数,自然是a>b。

阅读全文
标签:运算