我一直在研究K&R的C编程语言中的一些例子,但是我对练习1-12的测试感到困惑,我在那里切换了if和else语句.
问题是:编写一个程序,每行打印一个输入的单词.
所以基本上测试\n而忽略单词之间的多个空格,我首先写了这个.
#include <stdio.h>
int main()
{
int c;
while ((c = getchar()) != EOF) {
if (c == ' ' || c == '\t') {
printf("\n");
}
else {
putchar(c);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这一个中,它会在看到空格或制表符时打印出一个新段落,如果没有,则会完全复制输入.
这段代码产生了我想要的结果(在输入的单词之间还有额外空格的额外段落,但我现在忽略了这一点)
然后我决定看看如果我在改变条件时切换了if和else语句会发生什么,但事实证明结果并不相同.
#include <stdio.h>
int main()
{
int c;
while ((c = getchar()) != EOF) {
if (c != ' ' || c != '\t') {
putchar(c);
}
else {
printf("\n");
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这一个中,我希望它打印出不是空格或制表符的内容,如果没有,则会创建一个新段落.
我预计新条件会产生相同的结果.相反,它只是复制了我输入的内容.有谁知道为什么这不起作用?
我正计划深入了解OpenCL,并且一直在阅读OpenCL可以做的事情(只有表面知识),但有一些问题.
假设我有一台AMD Radeon 7750,我有另一台配有AMD Radeon 5870的电脑,并没有计划使用带有Nvidia卡的电脑.我听说优化特定设备的代码会带来性能优势.优化究竟意味着什么?从我所阅读的内容和一些猜测来看,这听起来意味着以一种GPU喜欢的方式编写代码(一般不用担心它是AMD或Nvidia卡)以及匹配方式显卡处理内存(我猜这是特定于计算设备的?或者这只是品牌特定的?).
因此,如果我为Radeon 7750编写代码并对其进行优化,我是否可以使用Radeon 5870将该代码带到另一台计算机上,并且在不更改代码的任何部分的情况下,仍然可以从优化中获得合理的性能优势?如果代码不起作用,将更改代码的一部分是一个小问题,还是会涉及重写足够的代码,以便最好为Radeon 5870编写优化的代码.