为什么将`uint8_t`赋值给`uint8_t`会给出转换警告?
发布时间:2020-12-14 05:45:43 所属栏目:Windows 来源:网络整理
导读:为什么这段C代码: #include stdint.huint8_t do_foo() { uint8_t int8; int8 = 0x80; int8 = int8 + (uint8_t) 1; return int8;} 给这个编译器警告? $gcc --versiongcc (Debian 4.9.2-10) 4.9.2$gcc -c -Wall -Wextra -Wconversion test.ctest.c: In funct
为什么这段C代码:
#include <stdint.h> uint8_t do_foo() { uint8_t int8; int8 = 0x80; int8 = int8 + (uint8_t) 1; return int8; } 给这个编译器警告? $gcc --version gcc (Debian 4.9.2-10) 4.9.2 $gcc -c -Wall -Wextra -Wconversion test.c test.c: In function ‘do_foo’: test.c:6:10: warning: conversion to ‘uint8_t’ from ‘int’ may alter its value [-Wconversion] int8 = int8 + (uint8_t) 1; ^ 据我所知,右边的表达式绝对是uint8_t类型,而不是int类型. 解决方法
这是由于整数提升.
操作数小于int.因此,它们被提升为int,并且在int中进行添加. 对于int8的赋值,必须将结果转换回uint8_t,从而导致警告,因为该值可能不适合. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- xaml – 当我更改主题设置时,为什么我的AdaptiveTrigger会触
- windows-7 – 在Windows 7 64位上运行时出现Tiny Pe文件格式
- 通过SSH转发已经运行的X-window系统应用程序
- Windows – Adob??e Air:隐藏启动本机窗口
- 脚本 – 可以通过Windows登录脚本设置系统环境变量吗?
- 生产环境下扩充Windows集群的共享磁盘
- Windows – 运行Powershell而不是VBScript有哪些优点?
- windows – 在Bash中循环:语法错误:意外的文件结束
- tfs – 有没有办法cc:某人在Microsoft Team Foundation Se
- 如何在Windows下使用NodeJS的db-mysql扩展?
推荐文章
站长推荐
热点阅读