如果我声明变量就好
int a/*comment*/ ; //This does not give any error .
int a/*comment*/bc; This gives error
Run Code Online (Sandbox Code Playgroud)
现在我没有得到这背后的原因,据我说,当符号/被读取后第一次读取字符a时,它会切换到DFA的其他状态以识别其他一些模式,因此没有错误在读取注释后的第二种情况下,它会找到一些不属于正式模式的其他序列,因此它会在有限自动机的某些非最终状态中停止,因为它会产生错误.
请清除这种困惑.
给出的问题陈述是"您正在使用一个只有4 KB可用内存的嵌入式设备(ATM),并且您希望按提取的金额对2,000,000个交易的抽签历史进行排序(丢弃原始交易顺序) )".
对于这个问题陈述,据我说我们应该使用合并排序,这个排序算法有什么问题吗?
这是变量printf的声明:
int printf=90;
Run Code Online (Sandbox Code Playgroud)
这运行没有任何错误,但如果我尝试使用给定名称printf打印标识符的值,那么它会给出错误,那么为什么尽管编译器允许printf用作标识符但我们不能以后打印它的价值.
我只是有一个困惑,就是在Bellman-ford的情况下,我们将其运行n-1次,这没有任何优势,而在Floyd warshall算法中,我们在每个阶段都运行了n次,所以我们在Bellman-ford的情况下不包括源顶点,这就是为什么我们将其运行n-1次,因此我对n和n-1有点困惑,请对此进行澄清。
/*
/**hiiii**/
*/
Run Code Online (Sandbox Code Playgroud)
说我像这样嵌套评论,所以这有什么不对?在开始时我们有/*一个字符串在里面,然后最后我们在最后*/,所以这里的错误是什么?
在下面的代码中,为什么我不能取消引用数组名,因为当一个数组作为参数传递给一个函数时,它就成了指向数组第一个元素的指针,那么为什么我们不能取消引用呢?
#include <stdio.h>
int main(void) {
char s[] = "radha";
int a[2] = {0,1};
printf("%s ", *s);
printf("%d", *a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我为上面的代码得到了分段错误,这里的原因是什么,当我使用[0]时,它在内部被转换为*(a + 0),那么简单地做*a或*S的问题是什么呢?澄清.
例如,当我们声明任何全局变量时
int x;
Run Code Online (Sandbox Code Playgroud)
它相当于
extern int x;
Run Code Online (Sandbox Code Playgroud)
现在默认情况下,编译器将全局变量初始化为0,这意味着它们被分配了内存.但如果我只是写
extern int x;
Run Code Online (Sandbox Code Playgroud)
那么这只会声明变量,而不会分配任何内存.所以,我的查询是,如果我之前写externint x或者我不写它,在全局变量的情况下,编译器如何区别对待它们?在我简单写入的情况下int x,它分配内存并同时将extern置于之前int x,而在我写入的情况下extern int x,它只声明变量而没有分配内存.请说明编译器如何以两种方式运行.
对于下面的代码,我定义了一个宏abc,其值已重新定义两次.当我们运行代码时,输出是一些垃圾值,我没有得到宏如何获取垃圾值,当它是一个宏,内存不能分配给宏abc?
#include<stdio.h>
#define abc 10
#define abc "rd"
int main()
{
printf("%d",abc);
return 0;
}
Run Code Online (Sandbox Code Playgroud)