unsigned long在我的Linux gcc上有8个字节.
unsigned long long在我的Linux gcc上也有8个字节.
所以我认为它们可以显示的整数范围是从0分钟到最大(2 ^ 64-1).
现在我想确认一下我是否正确.
这是我的代码:
#include <stdio.h>
int main(void)
{
printf("long takes up %d bytes:\n", sizeof(long));
printf("long long takes up %d bytes:\n", sizeof(long long));
unsigned long a = 18446744073709551615;
a++;
printf("a + 1 = %lu\n", a);
unsigned long long b = 18446744073709551615;
b++;
printf("b + 1 = %llu\n", b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,代码无法编译,我收到以下警告:
warning: integer constant is so large that it is unsigned
Run Code Online (Sandbox Code Playgroud)
我哪里做错了?我该如何修改代码?
假设,如果我使用这样的三元运算符: a ? b : c ? d : e
代码:
#include <stdio.h>
int main()
{
int a=1,b=2,c=3,d=4,e=5;
printf("%d\n", a ? b : c ? d : e);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Gcc和Clang给出一个输出2.
问题:
(a ? b : (c ? d : e))?要么当8051上电时,堆栈指针寄存器包含的值07h不是00h?
我在研究C++概念.我在构造函数和Destractor概念中感到困惑.编译器在退出程序时将隐式调用析构函数.但在我的程序中,只有构造函数调用.
#include <iostream>
using namespace std;
class A
{
int i;
public:
A()
{
cout<<"Constructor call"<<endl;
}
~A()
{
cout<<"Destructtor call"<<endl;
}
};
int main()
{
A *a = new A();
}
Run Code Online (Sandbox Code Playgroud)
输出:
Constructor call
Run Code Online (Sandbox Code Playgroud)
所以,我有一个问题:为什么析构函数在退出程序时不会被编译器隐式调用?
是dup(file_des)相当于fcntl(filedes, F_DUPFD, 0)?如果yes,那么哪个更好用?
在以下两个代码段中哪个性能更好?为什么?
小片1:
switch(a)
{
case 1 ... 5:
printf("%d\n",a);
break;
case 6 ... 10:
printf("%d\n",a);
break;
default:
printf("%d\n",a);
}
Run Code Online (Sandbox Code Playgroud)
摘录2:
switch(a)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("%d\n",a);
break;
case 6:
case 7:
case 8:
case 9:
case 10:
printf("%d\n",a);
break;
default:
printf("%d\n",a);
}
Run Code Online (Sandbox Code Playgroud) 以下两个switch语句的代码片段有什么区别?
哪一个更好?我什么时候可以同时使用它们?
情况1:
int i = 10;
switch(i)
{
//case
}
Run Code Online (Sandbox Code Playgroud)
案例2:
switch(int i = 10, i)
{
//case
}
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,C++ 17允许在switch语句中初始化变量.
我的方法中的最后一行应该是
return methodName(xxx,xxx);
Run Code Online (Sandbox Code Playgroud)
但我有它
return (xxx,xxx);
Run Code Online (Sandbox Code Playgroud)
方法返回类型是bool,我只是在调试问题时才注意到拼写错误.我没想到return (xxx,xxx);要编译.它究竟做了什么?
当我执行以下代码时:
cout<<min(INT_MAX, INT_MAX+ INT_MAX);
Run Code Online (Sandbox Code Playgroud)
我获得-2了输出.有人可以解释原因吗?
输出不应该是值INT_MAX?
运行以下代码时出现分段错误.这个错误的原因是什么?请帮忙
int main()
{
char *str2 = "Hello";
str2[3] = 'J';
printf("%s\n",str2);
return 0;
}
Run Code Online (Sandbox Code Playgroud) c ×5
c++ ×4
8051 ×1
c++17 ×1
constructor ×1
destructor ×1
embedded ×1
gcc ×1
integer ×1
linux ×1
literals ×1
min ×1
performance ×1
range ×1
syntax ×1