我想打印出unsigned long long这样的:
printf("Hex add is: 0x%ux ", hexAdd);
Run Code Online (Sandbox Code Playgroud)
但我得到了类型转换错误,因为我有一个unsigned long long.
我有以下代码.sprintf中第二个%d的输出始终显示为零.我想我指的是错误的说明符.任何人都可以帮助我获得具有正确值的写字符串.这必须以posix标准实现.感谢您的投入
void main() {
unsigned _int64 dbFileSize = 99;
unsigned _int64 fileSize = 100;
char buf[128];
memset(buf, 0x00, 128);
sprintf(buf, "\nOD DB File Size = %d bytes \t XML file size = %d bytes", fileSize, dbFileSize);
printf("The string is %s ", buf);
}
Run Code Online (Sandbox Code Playgroud)
输出:
The string is
OD DB File Size = 100 bytes XML file size = 0 bytes
Run Code Online (Sandbox Code Playgroud) 我正在使用Code :: Blocks with GCC 4.4.1,我似乎无法从我的C代码中打印64位有符号整数.
这段代码:
long long longint;
longint = 0x1BCDEFABCDEFCDEF; /* 2003520930423229935 */
printf("Sizeof: %d-bit\n", sizeof(longint) * 8); /* Correct */
printf("%llx\n", longint); /* Incorrect */
printf("%x%x\n", *(((int*)(&longint))+1), longint); /* Correct */
printf("%lld\n", longint); /* Incorrect */
Run Code Online (Sandbox Code Playgroud)
产生输出:
Sizeof: 64-bit
cdefcdef
1bcdefabcdefcdef
-839922193
Run Code Online (Sandbox Code Playgroud)
64位算术似乎正常工作:
longint -= 0x1000000000000000;
printf("%x%x\n", *(((int*)(&longint))+1), longint);
Run Code Online (Sandbox Code Playgroud)
得到:
bcdefabcdefcdef
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我在使用printf函数打印类型值时遇到问题unsigned long long int
我不知道出了什么问题.我在Windows 7 Professional 64位上使用Dev-Cpp 4.9.9.2和Visual Studio 2010 Professional(我知道它不是C编译器,但无论如何,想要尝试).为了显示,我使用了%llu修饰符(根据你如何printf一个unsigned long long int(unsigned long long int的格式说明符)?)但是我也尝试了I64d没有效果......
首先,我只是想打印的最小值和最大值unsigned long long int(使用ULONG_MAX来自limits.h)
printf("unsigned long long int: \n%llu to %llu \n\n", 0, ULONG_MAX);
Run Code Online (Sandbox Code Playgroud)
返回:
unsigned long long int:18446744069414584320 to 1580552164021 (Dev-Cpp)
unsigned long long int:18446744069414584320 to 0 (Visual Studio)
然后我尝试使用printf打印两个零
printf("unsigned long long int: \n%llu to %llu \n\n", 0, 0);
Run Code Online (Sandbox Code Playgroud)
返回:
unsigned long long int:0到1580552164021 (Dev-Cpp) …
#include <cstdio>
int main ()
{
unsigned long long int n;
scanf("%llu",&n);
printf("n: %llu\n",n);
n /= 3;
printf("n/3: %llu\n",n);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
无论我输入什么,我都会得到非常奇怪的输出,例如:
n: 1
n/3: 2863311531
Run Code Online (Sandbox Code Playgroud)
要么
n: 2
n/3: 2863311531
Run Code Online (Sandbox Code Playgroud)
要么
n: 1000
n/3: 2863311864
Run Code Online (Sandbox Code Playgroud)
什么原因?我该怎么做才能正确?
(g ++ 3.4.2,Win XP)
我是一名计算机工程专业的学生,下学期我将开始 C 课程。因此,为了让自己做好准备,我开始自学 C 并偶然发现了一项有趣的任务,该任务旨在让我乍一看似乎不是一个非常高级的水平。
任务是编写一个程序来计算Pascal's Triangle 中给定位置的值。计算它的公式写为element = row! /(位置!*(行 - 位置)!)
我已经编写了一个简单的控制台程序,它似乎可以正常工作,直到我开始使用大量数字对其进行测试。
当用第 16 行和位置 3 尝试这个程序时,它计算出的值为 0,虽然很明显不可能有这样的值(实际上它应该计算值为 560),但这个三角形的所有单元格都应该是整数并且大于一。
我想我在存储和处理大数时遇到了问题。阶乘函数似乎可以正常工作,并且我使用的公式可以正常工作,直到我开始尝试大数字
到目前为止,这里找到了最好的解决方案 -如何打印一个 unsigned long long int(unsigned long long int 的格式说明符)? 使用类型为 uint64_t 的 inttypes.h 库,但它仍然没有给我我需要的结果。
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
void clear_input(void);
uint64_t factorial(int x);
int main()
{
// Printing
printf("This program computes the value of a given position in Pascal's Triangle.\n");
printf("You will be asked for row and …Run Code Online (Sandbox Code Playgroud) 好的,我正在尝试打印相对较大的十进制/十六进制版本,unsigned long long我得到的结果很奇怪......
代码 :
unsigned long long a = 1llu<<63;
printf("decimal = %llu\n",a);
printf("hexadecimal = %llx\n",a);
Run Code Online (Sandbox Code Playgroud)
输出 :
decimal = 9223372036854775808
hexadecimal = 8000000000000000
Run Code Online (Sandbox Code Playgroud)
现在,这是什么:
9223372036854780000)为什么会这样?我究竟做错了什么???
#include <stdio.h>
int main() {
unsigned long int sum = 0LL;
long i;
for (i = 0LL; i < 100000000; i++) {
sum = sum + i;
}
printf("%i", sum);
}
Run Code Online (Sandbox Code Playgroud)
这就是我的全部代码,我很好奇为什么它打印 887459712 而不是 4999999950000000,以及如何解决这个问题
在ubuntu服务器11.10 for i386上,sizeof(int)是4,所以我猜4294967296是int类型的最大数量,不是吗?但是printf("%u\n",4294967296)输出0并带有警告:
警告:格式'%u'需要'unsigned int'类型的参数,但参数2的类型为'long long unsigned int'[ - Wformat]
有什么建议吗?
gcc的版本是(Ubuntu/Linaro 4.6.1-9ubuntu3)4.6.1
我试图用 unsigned long long 数据类型在 C 中声明 64 位变量,但它不起作用并且行为类似于 uint32 位变量。访问/检查 32 以上位的解决方案是什么?
#include <stdio.h>
#include <stdint.h>
int main() {
// Write C code here
printf("Hello world");
unsigned long long temp = 0x1234567890123456ULL;
unsigned long long temp2 = temp >> 1;
uint64_t var = 0x1234567890123456;
printf("\n%x", (long long) temp);
printf("\n%x", (long long) temp2);
printf("\n%x", 1ULL << 31ULL);
printf("\n%x", 1ULL << 32ULL);
printf("\n%x", var);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
你好,世界
90123456
48091a2b
80000000
0
90123456