c - 我的编译器有错误吗?两个相同的代码文件,但只有其中之一有效

标签 c

我一直在学习 C++,并且刚刚开始学习 C,但我遇到了一个奇怪的问题,它阻止了我的编译器编译。有几个杂散的“\342”和任何错误。

好吧,我现在知道这些是由使用非 ASCII 字符引起的,但其余帖子的解决方案非常简单。他们使用不同的“”符号,因为他们通过复制粘贴获得了代码。

我刚刚写了两个“int main”(我评论了一个或另一个 block 来测试代码......也不介意葡萄牙语。它根本不相关):

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

/*
int main()
{
    float x;
    printf("Introduza um numero com bastantes casas decimais: \n");
    scanf("%f", &x);
    printf("Com 2 casas decimais: %.2f  \nCom todas as casas decimais %f", x, x);⁠⁠⁠⁠
    return 0;
}

*/

int main()
{
    float var;

    printf("Introduza um numero com bastantes casas decimais: \n");

    scanf("%f", &var);

    printf("Com 2 casas decimais: %.2f \nCom todas as casas decimais: %f", var, var);


}

第一个 block 不起作用,它给了我这个错误:

||=== Build: Debug in ExplicAna (compiler: GNU GCC Compiler) ===|
/home/meneses/Cê/ExplicAna/main.c||In function ‘main’:|
/home/meneses/Cê/ExplicAna/main.c|10|error: stray ‘\342’ in program|
/home/meneses/Cê/ExplicAna/main.c|10|error: stray ‘\201’ in program|
/home/meneses/Cê/ExplicAna/main.c|10|error: stray ‘\240’ in program|
/home/meneses/Cê/ExplicAna/main.c|10|error: stray ‘\342’ in program|
/home/meneses/Cê/ExplicAna/main.c|10|error: stray ‘\201’ in program|
/home/meneses/Cê/ExplicAna/main.c|10|error: stray ‘\240’ in program|
/home/meneses/Cê/ExplicAna/main.c|10|error: stray ‘\342’ in program|
/home/meneses/Cê/ExplicAna/main.c|10|error: stray ‘\201’ in program|
/home/meneses/Cê/ExplicAna/main.c|10|error: stray ‘\240’ in program|
/home/meneses/Cê/ExplicAna/main.c|10|error: stray ‘\342’ in program|
/home/meneses/Cê/ExplicAna/main.c|10|error: stray ‘\201’ in program|
/home/meneses/Cê/ExplicAna/main.c|10|error: stray ‘\240’ in program|

在这一行:

printf("Com 2 casas decimais: %f  \nCom todas as casas decimais %f", x, x);⁠⁠⁠⁠

我把那行代码擦掉了三遍,又重写了一遍,但什么也没有。 "看起来完全一样。

然后我编写了完全相同的其他代码,令我惊讶的是它有效!

我错过了什么?

我很担心,因为这是我第一次编译C,担心将来可能会再次造成伤害。

最佳答案

将两个代码行中的 var 修复为 x 后,第二个代码(工作)行以以下八位字节结束:

 x  , sp  x  )  ; lf
78 2c 20 78 29 3b 0a

但是第一个(损坏的)以以下内容结尾:

 x  , sp  x  )  ;                                     lf
78 2c 20 78 29 3b e2 81 a0 e2 81 a0 e2 81 a0 e2 81 a0 0a

换句话说,夹在分号和换行符之间:

e2 81 a0 e2 81 a0 e2 81 a0 e2 81 a0

您的第一个代码行中确实在分号之后、换行之前隐藏了字符,您的编译器对此表示不满。

关于c - 我的编译器有错误吗?两个相同的代码文件,但只有其中之一有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36435616/

相关文章:

c - gstreamer 插件,用于从传输流中获取视频数据包和元数据

c - 一行内的预处理器指令 if

c - 从堆栈中弹出,程序无限循环

c - Matrix 中的同时旋转

c - 从C中的逗号分隔文本文件中读取各种长度的数据

c - 头文件最有效的使用方法是什么

c - 在 C 编程中打开文件并将文件数据更改为大写

c++ - 如何获得给定进程的窗口站?

c - dlmalloc 中的 bin_at

C 中的循环 #define