Unfortunately there's no real CSS way of doing what you ask. If C is taller than B, you're fine. But if B is taller than C, then C will not automatically expand to the height of B. There is another scenario here. Here's a quick ascii sketch for you
+------------------------------------------------------------------------------+
| +--------------------------------------------------------------------------+ |
| | <----------------- A ----------------------> +-------------------------+ | |
| | ^ | | | |
| | | | <---------- B --------> | | |
| | | | | | |
| | | | | | |
| | C | | | |
| | | +-------------------------+ | |
| | | | |
| | | | |
| | v | |
| +--------------------------------------------------------------------------+ |
+------------------------------------------------------------------------------+
Now, what you do here is have some html like so:
<html>
<head>
</head>
<body>
<div id="wrapper">
<div id="a">
<div id="b">
</div>
</div>
</div>
</body>
</html>
Now, if you specify A to have a width of X, with a padding-right of Y and the float right B, and give B a width of Z, the give B a display: block it will be "out of the document flow" and will be in that padded area on the right. So now C will always be at least as tall as B 😉
I hope that makes sense. You may need to tweak the css a bit here and there, but that's how I'd do it. It's considered a pseudo column. We can't do columns in CSS, so this is as close as it comes.