常德水鱼村 发表于 2023-8-10 22:45:48

第六课第三个疑问,请高手解答一下

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rect;
    static TCHAR szBuffer[] = TEXT("Hiding from the rain and snow.\n \
Trying to forget but I won't let go.\n \
Looking at a crowded street.\n \
Listening to my own heart beat.\n\n \
So many people all around the world.\n \
Tell me where do I find someone like you girl.");

    switch (message)
    {
    case WM_PAINT:
      hdc = BeginPaint(hwnd, &ps);
      GetClientRect(hwnd, &rect);
      DrawText(hdc, szBuffer, -1, &rect, DT_CENTER | DT_WORDBREAK | DT_EDITCONTROL);
      EndPaint(hwnd, &ps);
      return 0;

    case WM_DESTROY:
      PostQuitMessage(0);
      return 0;
    }

    return DefWindowProc(hwnd, message, wParam, lParam);
}

-------------------------------------------------------------------------------------------------
为什么\n后面还有个\,删掉后面这个\就会出错

isdkz 发表于 2023-8-10 22:46:06

在C语言中,反斜杠(\)被用作转义字符,用于表示特殊字符或特定的字符序列。在这段代码中,\n代表换行符。

在字符串常量中,如果想要在文本中插入一个反斜杠字符,需要使用两个反斜杠(\\)来表示。因此,如果删除代码中的\,会导致编译错误。

所以,这段代码中的\是用来转义反斜杠字符本身,以确保字符串常量中的\n被正确解释为换行符。

常德水鱼村 发表于 2023-8-10 22:49:06

isdkz 发表于 2023-8-10 22:46
在C语言中,反斜杠(\)被用作转义字符,用于表示特殊字符或特定的字符序列。在这段代码中,\n代表换行符。 ...

请假一下为什么这里是\n \而不是\\n

isdkz 发表于 2023-8-10 22:51:21

常德水鱼村 发表于 2023-8-10 22:49
请假一下为什么这里是\n \而不是\\n

\n是换行,\\n是反斜杠加n,这两个不一样

常德水鱼村 发表于 2023-8-10 22:52:56

常德水鱼村 发表于 2023-8-10 22:49
请假一下为什么这里是\n \而不是\\n

请问一下,这个\n换行,那么后面那个\是什么意思,删除就报错。还是window的换行符号是\n\

歌者文明清理员 发表于 2023-8-10 22:58:40

常德水鱼村 发表于 2023-8-10 22:52
请问一下,这个\n换行,那么后面那个\是什么意思,删除就报错。还是window的换行符号是\n\

\表示这一行代码没有结束,接着看下一行的,\去掉就相当于这行代码在字符串之间断了

ba21 发表于 2023-8-10 23:33:46

准确的说是
一行字符串太长想换到下一行的时候在相应的地方加上 \ 。
就如
"abcdef" 想把 "def" 在一下行输
那么就在c后面加\
"abc\
def"

歌者文明清理员 发表于 2023-8-10 23:59:50

ba21 发表于 2023-8-10 23:33
准确的说是
一行字符串太长想换到下一行的时候在相应的地方加上 \ 。
就如


不一定是字符串,c中也可以这样
    pri\
ntf("\
hi");
不过不能有缩进

ba21 发表于 2023-8-11 10:35:57

歌者文明清理员 发表于 2023-8-10 23:59
不一定是字符串,c中也可以这样

不过不能有缩进

这样不行吧。
是不是你的编译器比效特殊?你再去看看。
页: [1]
查看完整版本: 第六课第三个疑问,请高手解答一下