在这两种情况下都没有错误......它们之间有什么区别吗?
如果我编写以下程序,则运行代码时不会发出蜂鸣声.
#include <stdio.h>
int main()
{
printf("\a");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你能告诉我如何\a使用C程序产生哔声吗?
当我们将一个数组元素传递给一个函数时,它被视为一个普通变量,被调用函数创建一个实际参数的副本并对其进行操作.在形式参数中进行的任何更改都不会影响实际参数.
但是当我们传递一个完整的数组时,情况并非如此.在这种情况下,它(称为函数)可以访问实际参数,并且正式参数中的任何更改都会影响实际参数.为什么会这样?
在gcc编译器中sizeof(main),sizeof(printf)和sizeof(scanf)所有这些都是1.我想知道所有这些的大小是多少1.它背后的逻辑是什么?
是否可以设置一些条件,以便if和else控制语句中的if和else部分可以在没有任何警告或错误的情况下执行?
int main()
{
int main=5;
printf("%d",main);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,没有错误,gcc编译器打印5.但如果我写
int main()
{
int printf=5;
printf("%d",printf);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译器显示错误..为什么?
int main()
{
int x=5,y=10,z=15;
printf("%d %d %d");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:15 10 5 //在Turbo C 4.5中
3 Garbage values in gcc compiler
Run Code Online (Sandbox Code Playgroud)
当我们定义变量时,我的老师告诉我,如int x = 5,y = 10,z = 15; 默认情况下,它们被视为自动类型并存储在堆栈中.当您尝试打印3个整数值而不使用printf()的名称时,它将以Turbo C编译器的形式打印这3个LIFO格式的值.但是我认为当我们定义3个整数变量时,它们可能不会存储在连续的内存位置.所以当我尝试打印3个整数值而不使用它们的名称时,编译器将从堆栈顶部打印任意三个值.所以输出将有3个垃圾值,如gcc ..
#include<stdio.h>
int main(void)
{
int a=5;
printf("%d"+1,a);
}
Run Code Online (Sandbox Code Playgroud)
输出:d.我没有得到输出的结果:d?
#include<stdio.h>
int main(void)
{
static int i=i++, j=j++, k=k++;
printf("i = %d j = %d k = %d", i, j, k);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Turbo C 4.5的输出:
i = 0 j = 0 k = 0
在gcc我收到错误:
Initializer元素不是常量
哪一个在逻辑上是正确的?我有点困惑..