从一个例子
unsigned long x = 12345678UL
Run Code Online (Sandbox Code Playgroud)
我们总是知道编译器需要在上面的例子中只看到"long"来设置4个字节(32位)的内存.问题是为什么我们应该在长常量中使用L/UL,即使在声明它很长之后也是如此.
我很清楚函数原型,这个错误似乎是一个函数声明错误,这意味着我真的很困惑,为什么我看到这个警告,从而错误.
这几乎就像gcc完全忽略了我的函数原型.这是编译器错误吗?
为了简洁起见,我没有在单独的头文件中声明此函数,尽管它应该没有区别.
gcc输出:
$ gcc -Wall -std=c99 -pedantic primefactors.c
primefactors.c: In function ‘main’:
primefactors.c:8:5: warning: implicit declaration of function ‘largestprime’ [-Wimplicit-function-declaration]
primefactors.c: At top level:
primefactors.c:12:6: error: conflicting types for ‘largestprime’
primefactors.c:8:20: note: previous implicit declaration of ‘largestprime’ was here
Run Code Online (Sandbox Code Playgroud)
码:
#include <stdio.h>
#include <math.h>
long largetsprime(long);
int main()
{
printf("%d\n", largestprime(600851475143));
return 0;
}
long largestprime(long num)
{
int highest;
int mid = sqrt(num);
for (int i = 2; i < mid; i++) {
if (mid % i …Run Code Online (Sandbox Code Playgroud) 可能重复:
"L"在整数文字的末尾是什么意思?
例如
int one = 20;
int two = 20L;
cout << "one: " << one << " two: " << two << endl;
cout << "one: " << sizeof(one) << " two: " << sizeof(two) << endl;
Run Code Online (Sandbox Code Playgroud)
输出20两次然后输出两次.
我看过他们使用的一些代码'0x0000FFFFFFFFFFFFLL'.我不知道它做了什么.有人可以解释一下这段代码的作用.
int64 l1;
l1 = *(Int64 *)&d1 & 0x0000FFFFFFFFFFFFLL;
Run Code Online (Sandbox Code Playgroud)
虽然这不适合'stackoverflow'但我无处可寻.我是编程新手,请帮忙.
在一些变量初始化中"l"的含义是什么?例如:
#define maxpossible (1000000000L)
double A = 1L;
double B = 999999999l;
Run Code Online (Sandbox Code Playgroud)
"L"和"l"之间有区别吗?