NotePad++注释中的中文还编译报错?且无法输出中文字符串

前言

下载完NotePad后,开始编写Java程序,学习Java基础,但是遇到了一些问题,在https://editor.youkuaiyun.com/md/?articleId=126023155中已经提到
参考资料
1.https://blog.youkuaiyun.com/qq_44628230/article/details/109386047
2.https://blog.youkuaiyun.com/qq_45796667/article/details/105352261

解决方法

尝试参考资料1的方案(将NotePad++的编码方式也改为GBK或者GB2312)
在这里插入图片描述
在这里插入图片描述
然后测试一下(我写一下中文注释和System.out.println中文试一下)
先测试如下
在这里插入图片描述
编译没有再报错,运行也没有问题
在这里插入图片描述
再测试输出中文,代码如下
在这里插入图片描述
编译,报错如下
在这里插入图片描述
于是尝试参考资料2
在这里插入图片描述
显然可以了,问题解决了

但是还需要一步测试,如下,测试方法里的中文注释是否可行
代码如下

class MainActivity{
	//中文注释测试
	public static void main(String[] args){
		//测试中文注释1
		/*
		*测试中文注释2
		*/
		System.out.println("测试中文字符串输出");
		
		Animal a1 = new Animal();
		
		System.out.println("Using an Object");
		a1.testFun();
		
		System.out.println();
		System.out.println();
		System.out.println();
		System.out.println("Using a class");
		Animal.testFun();
	}
}

没有问题了,编译和运行如下
在这里插入图片描述

<think>嗯,用户问的是C语言中的“非法字符”是什么意思。首先,我得回忆一下自己在学习C语言时遇到的类似错误。非法字符通常是指代码中出现了不符合C语言语法规定的字符。这时候,编译器在编译的时候会报错,指出某个位置有非法的字符。 接下来,我应该分情况说明。比如,中文字符的问题。C语言的关键字和标识符必须用英文字符,如果用户不小心用了中文的标点,比如分号、括号或者引号,编译器可能无法识别,报非法字符的错误。例如,把英文分号; 写成中文的;,这时候就会出现问题。 然后是特殊符号的情况。比如用户可能在代码中误输入了@、$这些C语言不支持的符号,这些符号可能不被接受,导致非法字符的错误。比如int a@b = 10;这样的代码,@在这里就是非法的。 还有不可见字符的问题,比如从网页或者文档里复制代码时,可能会夹带一些不可见的控制字符或者空格,这些在编译器看来也是非法的,但肉眼不容易发现,这时候需要用文本编辑器查看或者重新输入。 另外,Unicode字符的问题也可能导致非法字符,特别是在使用非ASCII字符时,如果编译器不支持或者有正确设置编码,可能会出现错误。比如注释里用了中文,但文件编码不是UTF-8,也可能导致问题。 需要举几个例子来说明,比如中文符号的例子,还有特殊符号的例子,这样用户更容易理解。同时,要给出解决方法,比如检查符号是否为英文半角,使用合适的编辑器,查看错误提示的行号和位置,以及处理文件编码的问题。 还要考虑用户可能的操作环境,比如不同的操作系统或编译器对编码的处理可能不同,提醒用户注意文件编码的一致性,比如保存为UTF-8带BOM或者无BOM格式,根据编译器要求调整。 最后,总结一下,非法字符主要是因为代码中出现了C语言不允许的字符,可能是输入错误、编码问题或误用符号导致的。解决办法是仔细检查代码,尤其是标点和符号,确保使用英文半角,处理不可见字符和文件编码问题。</think>在C语言中,"非法字符"是指代码中出现了 **不符合C语言语法规定** 的符号或字符组合,导致编译无法识别。以下是常见场景和解释: --- ### 一、典型错误场景 1. **中文字符混用** ```c int a=10; // 错误:使用了中文全角等号=和分号; ``` - ✅ 正确应为英文半角符号:`int a = 10;` 2. **特殊符号误用** ```c printf("Hello@World"); // @符号在字符串外可能引发错误 int $var = 5; // 部分编译器可能允许$,但不符合标准C语法 ``` 3. **不可见字符问题** - 从网页复制的代码可能包含`零宽度空格`(显示为`<200b>`等) - 肉眼不可见的控制字符(如制表符`\t`误写成其他字符) 4. **Unicode/编码问题** ```c char str[] = "中文"; // 若文件编码与编译器设置不一致会报错 ``` --- ### 二、编译报错示例 ```c error: stray '\343' in program // 表示检测到ASCII码为0xE3的非法字符 error: expected ')' before ';' token // 常见于中文括号 ``` --- ### 三、解决方法 1. **检查所有符号是否为英文半角** - 尤其注意:`(){}[];,'"` 和运算符 `+-*/%=` 等 2. **使用纯文本编辑器** - 避免用Word等富文本编辑器写代码 - 推荐:VS Code、Notepad++、Vim 3. **查看错误定位** - 编译器会提示出错行号(如`test.c:15:5`表示第15行第5列) 4. **处理文件编码** - 统一使用UTF-8编码(带/不带BOM根据编译器要求) --- ### 四、特殊注意事项 - 某些编译器允许`$`符号(如GCC扩展),但 **不符合C标准** - 注释中的中文需确保文件编码正确 - 预处理指令中的非法字符(如`#include‹stdio.h›`使用中文尖括号‹›) 建议通过具体报错信息定位问题,逐步排查非法字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值