关于“指针在任何情况下都可进行>, <, >=, <=, = =运算”的判断

本文探讨了关于指针是否可以在任何情况下进行比较运算的问题。通过分析两种观点并给出实验代码,证实了不同类型指针直接比较会导致编译错误,需要进行类型转换。

在《求职之道》上看到了“指针在任何情况下都可进行>, <, >=, <=, = =运算”的判断题,

脑中无解,便去百度搜了下,可是发现大多数人都说这个命题是正确的,当然也有不同意见的。


意见一:
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址,可看成整型变量。 
如果仅仅是指针比较,其实就是整型变量比较,当然任何情况下都可以进行比较运算

意见二:
1.指针是地址就和一般数据一样,但地址不可以进行比较运算吧。所以应该是指针变量。
2.是在任何的情况下也应该不对,如果是类型不匹配呢。

然后自己写了如下代码:

int *a = (int*)0x00007788;
char *b = (char*)0x00007789;
if(a == b) cout<<"pa == pb"<<endl;
if(a > b) cout<<"pa > pb"<<endl;
if(a < b) cout<<"pa < pb"<<endl;

编译结果:

a.cpp:15:8: 错误: 在不同的指针类型‘int*’和‘char*’之间的比较需要一个类型转换 [-fpermissive]
a.cpp:16:7: 错误: 在不同的指针类型‘int*’和‘char*’之间的比较需要一个类型转换 [-fpermissive]
a.cpp:17:7: 错误: 在不同的指针类型‘int*’和‘char*’之间的比较需要一个类型转换 [-fpermissive]


所以我个人觉得就这么简单的一个程序就足以说明了上面的命题是错误的。





报错:'!=', '%', '&&', '(', '*', '+', '+=', '-', '.', '/', <, <=, '==', '>', '>=', '?', '?.', '?:', and, div, eq, ge, gt, le, lt, mod, ne, or, '||' or '}' expected, got '.' <default conditional expression>, <expression>, <ognl ternary expression> or '{' expected, got 'currentPage-1' <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" xmlns:sec="http://www.w3.org/1999/xhtml" layout:decorate="~{layout}"> <head> <title>图书列表</title> </head> <body> <div layout:fragment="content"> <div class="d-flex justify-content-between align-items-center mb-4"> <h2><i class="fas fa-list"></i> 图书列表</h2> <a th:href="@{/books/upload}" class="btn btn-primary" sec:authorize="isAuthenticated()"> <i class="fas fa-upload"></i> 上传图书 </a> </div> <!-- 搜索和筛选 --> <div class="card mb-4"> <div class="card-body"> <form th:action="@{/books}" method="get" class="row g-3"> <div class="col-md-6"> <input type="text" name="search" class="form-control" th:value="${param.search}" placeholder="搜索图书标题、作者或描述..."> </div> <div class="col-md-3"> <select name="format" class="form-select"> <option value="">所有格式</option> <option th:each="format : ${T(com.booksystem.entity.BookFormat).values()}" th:value="${format}" th:text="${format}" th:selected="${param.format == format}"> </option> </select> </div> <div class="col-md-3"> <button type="submit" class="btn btn-outline-primary w-100"> <i class="fas fa-search"></i> 搜索 </button> </div> </form> </div> </div> <!-- 图书网格 --> <div th:if="${books != null and !books.empty}"> <div class="row"> <div th:each="book : ${books}" class="col-xl-3 col-lg-4 col-md-6 mb-4"> <div class="card book-card h-100"> <div class="book-cover-container position-relative"> <div class="book-cover bg-light" th:style="'background-image: url(' + ${book.coverImagePath} + ');'"> <th:block th:if="${book.coverImagePath == null}"> <i class="fas fa-book fa-2x text-muted"></i> </th:block> </div> <span class="position-absolute top-0 end-0 m-2 badge bg-primary" th:text="${book.format}">格式</span> </div> <div class="card-body d-flex flex-column"> <h6 class="card-title" th:text="${book.title}">书名</h6> <p class="card-text text-muted small mb-2" th:text="${book.author}">作者</p> <p class="card-text small text-muted flex-grow-1" th:text="${#strings.abbreviate(book.description, 100)}">描述</p> <div class="mt-auto"> <div class="d-flex justify-content-between align-items-center"> <small class="text-muted" th:text="${#temporals.format(book.uploadDate, 'yyyy-MM-dd')}"> 上传日期 </small> <div> <a th:href="@{/books/preview/{id}(id=${book.id})}" class="btn btn-sm btn-outline-primary" title="预览"> <i class="fas fa-eye"></i> </a> <a th:href="@{/books/download/{id}(id=${book.id})}" class="btn btn-sm btn-outline-success" title="下载"> <i class="fas fa-download"></i> </a> </div> </div> </div> </div> </div> </div> </div> <!-- 分页 --> <nav th:if="${totalPages > 1}" class="mt-4"> <ul class="pagination justify-content-center"> <li class="page-item" th:classappend="${currentPage == 0} ? 'disabled'"> <a class="page-link" th:href="@{/books(page=0, search=${param.search}, format=${param.format})}"> 首页 </a> </li> <li class="page-item" th:classappend="${currentPage == 0} ? 'disabled'"> <a class="page-link" th:href="@{/books(page=${currentPage-1}, search=${param.search}, format=${param.format})}"> 上一页 </a> </li> <li th:each="page : ${#numbers.sequence(0, totalPages-1)}" class="page-item" th:classappend="${page == currentPage} ? 'active'"> <a class="page-link" th:href="@{/books(page=${page}, search=${param.search}, format=${param.format})}" th:text="${page+1}">1</a> </li> <li class="page-item" th:classappend="${currentPage == totalPages-1} ? 'disabled'"> <a class="page-link" th:href="@{/books(page=${currentPage+1}, search=${param.search}, format=${param.format})}"> 下一页 </a> </li> <li class="page-item" th:classappend="${currentPage == totalPages-1} ? 'disabled'"> <a class="page-link" th:href="@{/books(page=${totalPages-1}, search=${param.search}, format=${param.format})}"> 末页 </a> </li> </ul> </nav> </div> <!-- 空状态 --> <div th:if="${books == null or books.empty}" class="text-center py-5"> <i class="fas fa-book fa-4x text-muted mb-3"></i> <h4 class="text-muted" th:text="${param.search != null} ? '没有找到相关图书' : '暂无图书'"></h4> <p class="text-muted" th:text="${param.search != null} ? '尝试调整搜索条件' : '成为第一个分享图书的人吧!'"></p> <a th:href="@{/books/upload}" class="btn btn-primary" sec:authorize="isAuthenticated()"> <i class="fas fa-upload"></i> 上传图书 </a> <a th:href="@{/books}" class="btn btn-outline-secondary" th:if="${param.search != null}"> <i class="fas fa-times"></i> 清除搜索 </a> </div> </div> <div layout:fragment="scripts"> <script> document.addEventListener('DOMContentLoaded', function() { // 图书列表特定的JS代码 }); </script> </div> </body> </html>
最新发布
12-01
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值