C语言的里面的一个小问题

if (1<=n<=10);
为什么可以通过编译啊?if语句条件后面不是不加括号的嘛?通过了之后是无用代码吗?

if后面可以接括号呀 if(条件语句){语句块};后面有没有语句块,肯定是无用代码呀

;代表一个语句的结束。这个;不是if的,而是一个空语句的结束符。你这个代码等效于

if(1<=n<=10)
{
  ;
}

什么条件后面不加括号,都听不懂你在说什么,你说分号吗
分号就是个空语句,说明你的if什么都不干
什么都不干就不干呗,那有什么可奇怪的吗
你定义了个变量但是后边不用它难道不让吗,难道那不叫无用代码吗
很多时候允许无用代码是有利于编程的
比如需要写一个条件,但是条件还没想好,那就可以先写个if(true),这样不会影响逻辑执行,也不会忘记这里需要加个if
比如循环变量i,j,k,后面可能一时只用了i,没有用到j,k,但是至少你用到j,k的时候不用老回到开头去定义了