我在C工作,我必须连接一些东西.
现在我有这个:
message = strcat("TEXT ", var);
message2 = strcat(strcat("TEXT ", foo), strcat(" TEXT ", bar));
Run Code Online (Sandbox Code Playgroud)
现在,如果您有C语言经验,我确信您在尝试运行时会发现这会给您带来分段错误.那我该如何解决呢?
任务:打印数字从1到1000,不使用任何循环或条件语句.不要只写1000次printf()或cout语句.
你会怎么用C或C++做到这一点?
我正试图找到一种打印前导0的好方法,例如01001的邮政编码.虽然这个数字会被存储为1001,但这样做的好方法是什么?
我想过要么使用case case语句/如果那么弄清楚这个数字是多少位数,然后把它转换成一个带有额外0的打印的char数组,但我不禁想到有可能有办法用printf格式语法,这是我的意思.
我永远无法理解如何unsigned long在C中打印数据类型.
假设unsigned_foo是unsigned long,然后我尝试:
printf("%lu\n", unsigned_foo)printf("%du\n", unsigned_foo)printf("%ud\n", unsigned_foo)printf("%ll\n", unsigned_foo)printf("%ld\n", unsigned_foo)printf("%dl\n", unsigned_foo)而且他们都打印了某种-123123123数字而不是unsigned long我的数字.
我知道未初始化的局部变量是未定义的行为(UB),并且该值可能具有可能影响进一步操作的陷阱表示,但有时我想仅使用随机数进行可视化表示,并且不会在其他部分使用它们.例如,程序在视觉效果中设置具有随机颜色的东西,例如:
void updateEffect(){
for(int i=0;i<1000;i++){
int r;
int g;
int b;
star[i].setColor(r%255,g%255,b%255);
bool isVisible;
star[i].setVisible(isVisible);
}
}
Run Code Online (Sandbox Code Playgroud)
是不是比它快
void updateEffect(){
for(int i=0;i<1000;i++){
star[i].setColor(rand()%255,rand()%255,rand()%255);
star[i].setVisible(rand()%2==0?true:false);
}
}
Run Code Online (Sandbox Code Playgroud)
并且还比其他随机数发生器更快?
我已经看了十多年了.我一直在努力思考它有什么好处.因为我主要在#defines中看到它,所以我认为它对内部范围变量声明和使用中断(而不是gotos)有好处.
对其他事情有好处吗?你用它吗?
我正在阅读我的C++讲师的一些讲义,他写了以下内容:
- 使用缩进//确定
- 永远不要依赖运算符优先级 - 始终使用括号//确定
- 总是使用{}块 - 即使是单行// 不行,为什么???
- 比较左侧的Const对象// OK
- 对于> = 0 //好玩法的变量使用无符号
- 删除后将指针设置为NULL - 双删除保护//不错
第三种技术对我来说并不清楚:通过在一条线中放置一条线可以获得{ ... }什么?
例如,拿这个奇怪的代码:
int j = 0;
for (int i = 0 ; i < 100 ; ++i)
{
if (i % 2 == 0)
{
j++;
}
}
Run Code Online (Sandbox Code Playgroud)
并替换为:
int j = 0;
for (int i = 0 ; i < 100 ; ++i)
if (i % 2 == 0)
j++;
Run Code Online (Sandbox Code Playgroud)
使用第一个版本有什么好处?
我有一个很长的sqlite查询:
const char *sql_query = "SELECT statuses.word_id FROM lang1_words, statuses WHERE statuses.word_id = lang1_words.word_id ORDER BY lang1_words.word ASC";
Run Code Online (Sandbox Code Playgroud)
如何在多行中打破它以便于阅读?如果我执行以下操作:
const char *sql_query = "SELECT word_id
FROM table1, table2
WHERE table2.word_id = table1.word_id
ORDER BY table1.word ASC";
Run Code Online (Sandbox Code Playgroud)
我收到了一个错误.
有没有办法在多行中编写查询?
我很久以前在一个论坛里偶然发现了一个有趣的问题,我想知道答案.
考虑以下C函数:
#include <stdbool.h>
bool f1()
{
int var1 = 1000;
int var2 = 2000;
int var3 = var1 + var2;
return (var3 == 0) ? true : false;
}
Run Code Online (Sandbox Code Playgroud)
这应该总是返回false自var3 == 3000.该main函数如下所示:
#include <stdio.h>
#include <stdbool.h>
int main()
{
printf( f1() == true ? "true\n" : "false\n");
if( f1() )
{
printf("executed\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
由于f1()应该总是返回false,人们会期望程序只能在屏幕上打印一个false.但是在编译并运行它之后,还会显示执行:
$ gcc main.c f1.c -o test …Run Code Online (Sandbox Code Playgroud) c ×10
c++ ×3
printf ×3
coding-style ×1
curly-braces ×1
garbage ×1
gcc ×1
linux ×1
long-integer ×1
loops ×1
objective-c ×1
string ×1
unsigned ×1