小编Imo*_*lis的帖子

函数返回值定义为常量

我在很多场合看到过用const类型限定符来定义函数:

const int foo (int arg)
Run Code Online (Sandbox Code Playgroud)

这有什么意义?函数的返回值无论如何都无法改变..

c const function

16
推荐指数
2
解决办法
1048
查看次数

"EiC"的含义

看来我无法找到"EiC"代表什么.它已被用作解释器,语义前端IDE类似于"Clang",但有点旧.

这是什么意思,为什么我找不到任何参考?

c c++ interpreter c89

11
推荐指数
2
解决办法
738
查看次数

获取指向字符串常量的指针

short var = *((unsigned short*)&"BM");
Run Code Online (Sandbox Code Playgroud)

"BM"必须位于只读存储区的某处,为什么我不能获得指向它的指针?(它编译但是它表示无效的内存区域(clang编译器))

c string pointers memory-management c89

8
推荐指数
1
解决办法
111
查看次数

程序源代码与其输出完全相同

我越想了解这个困惑的谜,我就越想放弃.

char *s = "char *s = %c%s%c; main(){printf(s,34,s,34);}"; main(){printf(s,34,s,34);}
Run Code Online (Sandbox Code Playgroud)

这个单行源代码如何在程序执行时生成完全相同的输出,这种程序有什么共同的概念吗?

c printf quine output

8
推荐指数
1
解决办法
254
查看次数

新行字符是否与前一个字符在同一行中

我为什么要问?

我被赋予了重新实现文本框GUI小部件和类型编写器的严峻任务,因此这是此问题的起源.


我目前的做法

目前在我的项目中,新行字符\n保存下一行(column1,line + 1)最终第一个字符的位置坐标.但是,我担心这不是对换行位置的标准理解.


新行字符是否与\n前一个字符在同一行中,它是下一行的一部分(因为它在我当前的方法中)或者它们都不是?


这有什么不同吗?

我在使用退格键删除新行时遇到了复杂问题,因为我必须为此事件实现特定条件,但我试图避免这种情况(或者可以通过更改处理新行字符的方式来避免),因为从所有这些条件来看,我看起来正在尝试发明AI或其他东西.

c user-interface textbox position newline

4
推荐指数
1
解决办法
101
查看次数

为什么当前目录改变

调用GetOpenFileName进程的当前目录后,更改为文件打开文件的目录GetOpenFileName


如何保留默认的当前目录?

c windows directory winapi

4
推荐指数
2
解决办法
875
查看次数

C代码崩溃(不明白为什么)

基本上我是初学者编码器,这就是我写的:

#include <stdio.h>
#include <stdlib.h>

int main()
{
system("COLOR 0A");

char playerName[13];
char playerGender;
int playerAge;

printf("Please input your name and age!\nName: ");
scanf("%s", playerName);
printf("Age (from 18 to 50): ");
scanf("%d", &playerAge);

label:
if(playerAge > 18 && playerAge < 50)
{

    printf("What gender are you, M(male) or F(female): ");
    scanf("%c", playerGender);

    gender:
    if(playerGender == 'M' || playerGender == 'F'){

        printf("Okay, so your name is %s, you're %d years old and you're a %s.", playerName, playerAge, playerGender);
    }else{
        printf("Try again.\n\n" …
Run Code Online (Sandbox Code Playgroud)

c

3
推荐指数
1
解决办法
90
查看次数

void*的增量类型转换为char*失败

在这样的函数中:

char nextchr (void* p)
{
    ((char*)p)++;

    return *(((char*)p));
}
Run Code Online (Sandbox Code Playgroud)

这应该返回传递的字符串文字的第二个字符,因为参数p根本无法做到.

为什么会这样?


解决方案总结:

@MM: ++需要一个左值(左手值)来应用它,而类型转换的结果不是那个.

@OP更新:一些编译器(通常/旧的C89// 编译器 /类似我的)可以允许((char*)source)++;/只要它不作为参数传递给函数/,即使它是非法的并且被C标准证明是非法的.

c pointers void c89 pointer-arithmetic

1
推荐指数
1
解决办法
43
查看次数

哪个更快:使用加法算法增加或等式

例:

a : ++i;
b : i++;
c : i += 1;
d : i = i + 1;
Run Code Online (Sandbox Code Playgroud)

假设每个abcd被称为完全同步,其中一个将首先执行?

c math performance increment addition

-1
推荐指数
2
解决办法
888
查看次数