惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Forbes - Security
Forbes - Security
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
W
WeLiveSecurity
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
N
News and Events Feed by Topic
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
Engineering at Meta
Engineering at Meta
PCI Perspectives
PCI Perspectives
Martin Fowler
Martin Fowler
T
The Exploit Database - CXSecurity.com
F
Full Disclosure
WordPress大学
WordPress大学
S
Security Affairs
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
SegmentFault 最新的问题
P
Privacy International News Feed
IT之家
IT之家
M
MIT News - Artificial intelligence
G
GRAHAM CLULEY
Hacker News: Ask HN
Hacker News: Ask HN
D
DataBreaches.Net
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Check Point Blog
美团技术团队
Security Latest
Security Latest
Cyberwarzone
Cyberwarzone
N
News and Events Feed by Topic
MyScale Blog
MyScale Blog
H
Help Net Security
宝玉的分享
宝玉的分享
The Hacker News
The Hacker News
The Last Watchdog
The Last Watchdog
The Cloudflare Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
爱范儿
爱范儿
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
I
Intezer
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
AI
AI
I
InfoQ
N
News | PayPal Newsroom
TaoSecurity Blog
TaoSecurity Blog

C

各位大佬, C 語言該怎麼練習啊 - V2EX 分享一个代码优化导致的死循环 - V2EX 人再笨还能写不出内存安全的 C? - V2EX 想念 C - V2EX C11 的 _Generic,现实当中用得多不多?(尤其是公司项目) 坑爹的 GBK:大家都应该去用 UTF-8 - V2EX 分享一个用 AI 学习 C 语言的例子 一个简单的 C 程序,但是不明白区别在哪里 我这段 C 代码可以在编译时候输出结构体的大小,你们还有什么好点子, show me the code! - V2EX 这段话是否正确?「取余这个运算,只有 Python 是对的。当初 C 这个老师教错了,那么一大票学生也就只敢跟着老师错。只有 Python 敢于站出来坚持正确答案。」 - V2EX C 中可变参数如何直接传递到 printf() - V2EX C 的内存打印实现 - V2EX 函数能否实现透传不定长度参数,最终由 printf 打印 请大佬帮忙修改一份 elf 文件里的数值 - V2EX Linux 上 C 的程序遇到个异常退出问题,局部变量大小有限制?? C 语言新手求助:如何在 vscode 中使用第三方库? - V2EX 将资源嵌入到可执行文件中并保持目录结构 - V2EX 一个简单实用的 C 工程示例, 附简洁的 Makefile - V2EX 关于 C 语言的相关问题 - V2EX 轮子更新: C/C++ 跨平台小工具库 - V2EX 用 riscv64- Linux -gnu-gcc 编译的 c 文件为啥能在 x8664 下运行? - V2EX char *s = "0123"和 char s[] = "0123"的区别 有人能完整地解释一下 int (*daytab) [13]和 int *daytab[13]吗 在 c 语言中, int a;是 declaration 还是 definition - V2EX 一个简单(奇怪)的 C 语言问题 - V2EX c 语言中打印指针的值打印的是 OS 分配的虚拟地址的值吗?要怎么知道 OS 给这个 c 程序进程分配的虚拟地址的大小呢? - V2EX gcc 是怎么找到 system 函数的定义(实现)的? - V2EX 用 C 实现轻量级表达式完成策略定制化和模板内容生成 - V2EX c 语言是如何给汉字编码的? - V2EX 还是不太理解 C 静态库和动态库? - V2EX 开源 C 库 bfdev: MPI 大数运算 - V2EX C 语言中的面向切面编程(AOP) - V2EX 网络语言污染/扭曲专业术语名词——《为什么 c 语言这么抽象?》 - V2EX C 语言函数资源开销可观测性 - V2EX C 语言用户态函数可观测性 - V2EX 在 C 中,如何正确拷贝字符串 - V2EX c 语言中自定义 section 段问题请教 - V2EX C 语言的源码过滤功能的工具 - V2EX 求助 libcurl 的 curl_easy_pause() 使用方法 - V2EX 各位有什么深入了解 C 语言的书嘛? - V2EX 不熟悉 cmake,请教一下多模块项目的 cmake 写法 - V2EX 大家有没有值得推荐的 c 语言的开源项目,用来学习或者贡献的。 - V2EX 求帮忙看一下这个 C 代码为什么会段错误! - V2EX int 型返回值所能表达的内容极限 - V2EX 刚刚突然感受到了 C 语言指针的神奇之处 - V2EX 开源 C 语言库 Melon 之模块选择性编译 - V2EX 这年头搞 c 还有前途吗 看看我的 leetcode 第 151 题目 反转字符串 - V2EX 百变开源 C 语言库日志模块 - V2EX 最好用的 C 语言 JSON 解析器 - V2EX
为什么下列程序进行的是无符号乘法? - V2EX
rookiemaster · 2024-04-19 · via C

这是一个创建于 786 天前的主题,其中的信息可能已经有所发展或是发生改变。

unsigned int x1 = 0xaeb1c2aa;
unsigned int x2 = 0xaeb1c2aa;

long long r_whole = (signed long long)x1 * (signed long long)x2;

printf("r_whole = %lld\n",r_whole);

输出的结果是无符号乘法的结果:

r_whole = 8590088583138384100

而下面的程序

unsigned int x1 = 0xaeb1c2aa;
unsigned int x2 = 0xaeb1c2aa;

int xx1 = x1;
int xx2 = x2;

long long r_whole = (signed long long)xx1 * (signed long long)xx2;

printf("r_whole = %lld\n",r_whole);

输出的事有符号乘法的结果:

r_whole = 1860719719092984036

第一段程序里我不是对 x1 进行强制类型转换了吗

chingyat

1

chingyat      2024 年 4 月 19 日 via iPhone

因为后者 xx1 和 xx2 是负数.

Hsinyao

2

Hsinyao      2024 年 4 月 19 日

不要纠结这些语法,建议 objdump 看汇编

ysc3839

4

ysc3839      2024 年 4 月 19 日 via Android

因为 1 没符号,转成有符号类型时也不带符号,2 有符号,转成有符号类型时就会带符号

cnbatch

5

cnbatch      2024 年 4 月 19 日

写成这样就容易懂了:

uint32_t x1 = 0xaeb1c2aa; // 2930885290
uint32_t x2 = 0xaeb1c2aa;

int64_t var1 = x1;
int64_t var2 = x2;

long long r_whole = var1 * var2;

x1 和 x2 强制转换成 signed long long 的时候,实际上就相当于 int64_t var1 = x1;
有符号 long long 能够容纳的范围足够大,大到可以完整“吞下”整个 0xaeb1c2aa

iceheart

6

iceheart      2024 年 4 月 20 日 via Android

第二个数值溢出,转成 int 型变成负数了
int 扩展成 long long ,高位按符号位扩展,所以仍是负数。