Open ghostbody opened 8 years ago
TA大大,Sicily上的1002那道序列题,我的做法是把序列写成一个函数,存到以1开始的数组里,然后输入的数字与小于等于它的数相比较,如果有相同的就输出[ ]里面的数字。但是我调用函数的时候,要跟里面的数列比较,编译说没有声明数组名s[ ].....我好方....
@most-cute-fangfang 不明白你说啥?
@ghostbody 写成什么形式?…pdf还是md?
@JerryChan31 看要求 ╮(╯▽╰)╭
@ghostbody 请教一个理论题的问题:
void main()
{
1 < 2 ? return 1 : return 2;
}
这里编译器编译提示 [Error] expected expression before 'return' return左边为什么还要有表达式?… 还有return到底是个什么东西?…上网查查不到…
@JerryChan31 1. void main是没有返回值的。2. 你要理解这个三目运算的意思,是前面的表达式为真执行return1,若为假执行后面的表达式。
也就是:
if(1 < 2) {
return 1;
} else {
return 2;
}
另外有一点,C标准要求main返回值类型为int。void main是国内部分教科书的错误写法,由于某些技术原因在x86平台上不会出错,但是影响程序可移植性。
(事实上按照C标准编译器可以在这里报错,如果它严格检查标准
---- JerryChan31编写 ----
@ghostbody 请教一个理论题的问题:
void main()
{
1 < 2 ? return 1 : return 2;
}
这里编译器编译提示 [Error] expected expression before 'return' return左边为什么还要有表达式?… 还有return到底是个什么东西?…上网查查不到…
Reply to this email directly or view it on GitHub: https://github.com/wujr5/c-and-cpp-language-learning/issues/44#issuecomment-166835582
@ghostbody 也是理论题里的一个问题。
#include<string.h>
#pragma warning(disable:4996)
int main()
{
char *str = "hello, world!!\n";
char strc[] = "good morning\n";
strcpy(strc, str);
printf("%s\n", strc);
return 0;
}
这个程序为什么执行strcpy以后strc的数组不会越界?就算把strc初始化改成“g”也正常输出…
然而在百度上找到这个……
@JerryChan31 越界了啦,没报错而已。
@ghostbody 咦但是它可以输出正确答案
@JerryChan31 gcc里对于字符串越界的处理似乎就是这样…… 比如
char s[5] = "hahahaahahahahah";
printf("%s", s);
这样不会报错,不会RE,它自己给你扩充了空间 具体为何我也不清楚
@MarshallW906 后面会出乱码,编译器也会警告你。 gcc 4.9.1
TA大大,请问这题怎么求解? 而且改为
int *ptr = (int *)100;
的话,答案就是8... 嘤嘤,求解释~~~
所以ptr指向十六进制0000 0064(十进制表示为100)的这个地址? 咳咳,好晕呀~~
还有这题,给跪了。虽然我连题目看的都不太懂,但是除了B,我的编译器一直报错。ORZ
一共4个文件,几百题。现在题库中共563题。同学们可完成每一类别题目中的三分之一。多做不限。
文件在群共享和FTP的Resource文件夹均有。
DDL:
2015年12月30日 18:002015年12月30日 21:00命名:
13331314_叶嘉祺_理论题.pdf
要求,对每道题写简单的解释,并且理解。