sách gpt4 ai đã đi

c - đối số int dài != đối số int dài

In lại 作者:太空宇宙 更新时间:2023-11-04 00:34:59 29 4
mua khóa gpt4 Nike

将 1113355579999 作为参数传递时,该值在函数内部变为 959050335。

调用(main.c):

printf("%d\n", FindCommonDigit(1113355579999, 123457));

函数(ex4.c):

int FindCommonDigit(long int n1, long int n2) { printf("%d\n", n1); }

有什么问题?值得一提的是,在到达 inf 之前值会发生变化。

1 Câu trả lời

十进制数 1113355579999 太大,无法容纳 32 位整数,这是 long int 类型的常见大小,实际上是 is the size of long long int in your MSVC environment .在提供 32 位 long int 的 C 实现中,该常量的类型为 long long int.

您可以将 long long int 传递给 long int 类型的参数,但是如果该值对于 long int 来说太大,则结果行为是实现定义的。可能保留了最低有效的 32 位,对于您的特定数字,这将导致数字 959050335(看起来很熟悉?)。要将参数传递给函数而不损失保真度,函数参数必须具有可以容纳参数的类型。在符合标准的 C 实现中,long long int Vậy là đủ rồi.

正确接收参数后,函数还必须将其正确呈现给 inf(),否则行为未定义。以十进制表示的 long long int 的格式化指令是 %lld.

综合起来,您似乎想要这个:

int FindCommonDigit(long long int n1, long long int n2) {
printf("%lld\n", n1);

return /* ... something ... */;
}

BạnThực ra需要函数返回一个số nguyên,否则行为又是未定义的。

此外,正如@pmg 在评论中观察到的,该函数的原型(prototype)必须在调用它的范围内。就是这样……

int FindCommonDigit(long long int n1, long long int n2);

... 在使用函数的源文件顶部附近(即 main.c)。如果愿意,您可以将其直接放入文件中,但您应该考虑将原型(prototype)放入头文件中并#include。如果函数将在多个源文件中使用,后者特别有用。

关于c - long int 参数 != long int 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47500358/

29 4 0
Bài viết được đề xuất: c - 空指针中的字节数
Bài viết được đề xuất: css - 在我的元素中制作 CSS Sprite 有问题吗?
Bài viết được đề xuất: C - 将指针传递给函数
Bài viết được đề xuất: 将 X 字节写入文件描述符的正确方法,其中 X 是无符号 64 位整数
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com