Validate your code.
table can't contain anything other than <thead>, <tbody>or <tr>. this means that <table><td></td> is invalid. Just as wrong as <table><p>.
With default css values and content that isn't "too wide", just specifying width for cells will do. With "too wide" content, things change a bit. Do note the difference between auto table-layout (default) and fixed table-layout. If you're not using fixed layout, the table and its cell will expand to the smallest possible width to fit its contents.
Here, the long word is too wide to fit in the specified cell width. As such, the table, table row and table cell are expanded, unless you also specify table-layout: fixed;
<style type="text/css">
table {
width: 85px;
table-layout: fixed;
}
tr, td {
width: 80px;
border: 1pt solid;
}
</style>
</head>
<body>
<table>
<tr>
<td>
short
</td>
</tr>
<tr>
<td>
ipsum lorem etc... andoneverylongwordsomeplaceinthere. which makes the td rather wide...
</td>
</tr>
</table>
If you need to know if some words are too wide so you can break them up, you'd have to resort to javascript afaik.