printf("%s%s%s", acode->h == 1 ? "hr" : "",acode->x == 1 ? "ab" : "",acode->d == 1 ? "ee" : "");c语言中,上述语句是否有问题,
时间: 2024-05-01 11:15:21 浏览: 23
你的代码片段看起来是在检查几个条件,并根据这些条件在字符串中插入不同的部分。这个代码片段本身看起来没有明显的语法错误,但是它可能存在一些逻辑问题。
首先,这个代码片段似乎是在检查三个条件:acode->h == 1,acode->x == 1,和 acode->d == 1。如果这些条件中的任何一个为真,那么就会在字符串中插入相应的部分。然而,你似乎遗漏了一个逻辑语句来连接这三个条件。在C语言中,你需要在这些条件之间使用逻辑运算符(如&&或||)。
另外,这段代码使用了三个问号(??)作为三元运算符的一部分,这是C语言中不推荐使用的。推荐的方式是在每个条件后面使用一个问号(?),并在后面使用一个冒号(:)来分隔两个部分。
所以,你的代码应该更改为:
```c
printf("%s%s%s", acode->h == 1 ? "hr" : "", acode->x == 1 ? "ab" : "", acode->d == 1 ? "ee" : "");
```
这个代码应该能按预期工作,只要acode->h、acode->x和acode->d都有相应的值,并且它们都是布尔类型(即只有true或false)。如果其中一个为false,那么相应的字符串就会被打印出来。
最后要注意的是,printf函数需要一个格式化字符串作为参数,而你的代码中并没有提供这个字符串。你可能需要确保在调用printf函数时提供了正确的格式化字符串。例如:
```c
printf("The value of acode->h is %s, acode->x is %s, and acode->d is %s\n", acode->h == 1 ? "hr" : "", acode->x == 1 ? "ab" : "", acode->d == 1 ? "ee" : "");
```
在这个例子中,我假设你有一个名为acode的变量,它是一个结构体,包含h、x和d三个字段。然后我使用条件语句和格式化字符串来打印出这些字段的值。但你需要根据你的实际情况调整这段代码。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
<% String code = String.valueOf(request.getParameter("YYM")); System.out.print(code); if (code == null || code.isEmpty()) { %> 请输入预约码,点击返回签到 <% } else { Connection conn = SQLConn.openDB(); final String SELECT_SQL = "SELECT ACode FROM User_ZC JOIN YuYue ON User_ZC.UserId = YuYue.UserId WHERE Login = 1 AND State = 1 AND Arrive IS NULL"; final String UPDATE_SQL = "UPDATE YuYue SET Arrive =1 WHERE ACode = ?"; PreparedStatement pstmtSelect = conn.prepareStatement(SELECT_SQL); ResultSet rs = pstmtSelect.executeQuery(); int count = 0; while (rs.next()) { String Acode = rs.getString("ACode"); if (code==Acode) { try { PreparedStatement pstmtUpdate = conn.prepareStatement(UPDATE_SQL); pstmtUpdate.setString(1, code); count = pstmtUpdate.executeUpdate(); pstmtUpdate.close(); } catch (SQLException e) { e.printStackTrace(); } break; }else{ System.out.print("预约码不匹配"); } } if (count > 0){ %> 签到成功 <% } else { %> 签到失败 <% } rs.close(); pstmtSelect.close(); conn.close(); } %>为什么输入正确的YYM,也会提示“预约码不匹配”
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)