GCC编译器如何解释以下行:
printf("HELLO");
Run Code Online (Sandbox Code Playgroud)
我想知道这个,因为当我运行以下程序时:
main()
{
printf(5+"Good Morning");
}
Run Code Online (Sandbox Code Playgroud)
该程序正在打印:
Morning
Run Code Online (Sandbox Code Playgroud)
为什么编译器从第六个字符开始打印?
在Java中我们编写了一个代码:
A a1;
a1 = new A();
Run Code Online (Sandbox Code Playgroud)
编译器编译代码时保留了多少字节的内存:
A a1;
Run Code Online (Sandbox Code Playgroud) 在Java中,(Number/0)抛出ArithmeticException而(Number/0.0)= Infinity.为什么会这样?
当我们将字符数组定义为'char name [10]'时,这表明数组'name'可以包含一个长度为十个字符的字符串.但是在下面显示的程序中,数组名称可以包含十个以上的字符.这怎么可能?
//print the name of a person.
char name[10];
scanf("%s",name);
printf("%s",name);
Run Code Online (Sandbox Code Playgroud)
如果我输入长度大于10个字符的名称,则没有运行时错误,程序将打印我输入的所有字符.如果我输入二十个或更多字符的名称,则程序终止.
注意:我正在使用gcc编译器在Ubuntu9.04上运行该程序.
考虑一下该计划
main()
{
printf("%d %d %d",sizeof('3'),sizeof("3"),sizeof(3));
}
Run Code Online (Sandbox Code Playgroud)
gcc编译器的输出是:
4 2 4
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
int i=10;
printf("Address of i = %u",&i);
Output:
Address if i = 3220204848
Output on re-execution:
Address of i = 3216532594
Run Code Online (Sandbox Code Playgroud)
i每次执行程序时,我都会得到一个新地址.这意味着什么?
以下代码操作指向同一位置的指针; 我很困惑为什么当我运行代码时,输出没有显示值重合.
#include "stdio.h"
main()
{
int i=3,*x;
float j=1.5,*y;
char k='c',*z;
x=&i;
y=&j;
z=&k;
printf("\nAddress of x= %u",x);
printf("\nAddress of y= %u",y);
printf("\nAddress of z= %u",z);
x++;
y++;y++;y++;y++;
z++;
printf("\nNew Address of x= %u",x);
printf("\nNew Address of y= %u",y);
printf("\nNew Address of z= %u",z);
printf("\nNew Value of i= %d",i);
printf("\nNew Value of j= %f",j);
printf("\nNew Value of k= %c\n",k);
}
Run Code Online (Sandbox Code Playgroud)
输出:
地址x = 3219901868
地址y = 3219901860
地址z = 3219901875
新地址x = 3219901872
新地址y = 3219901876
新地址z = 3219901876 …